// Avoimen kalenterin numero.
var openTableNumber = 0;

// Avoinna oleva viikko.
var calendarYear = 2007;
var calendarMonth = 1;
var calendarDay = 1;

// Globaalissa muuttujassa boolean admin on tieto siitä, onko käyttäjä
// kirjautunut sisään. Tämän muuttujan perusteella näytetään
// vain painikkeita, mutta varsinaiset
// toiminnot tarkistetaan aina palvelinpäässä!




/*****************************************************************************
 *
 *                            PÖYDÄN TOIMINNOT
 *
 *****************************************************************************/


/**
 *
 * @access public
 * @return void
 **/
function openMenu(tableId){

	openTableNumber = tableId;

	closeMenus();

	var table = document.getElementById("tableMenu_" + openTableNumber);
	if (table != null) {

		table.style.visibility = "visible";
		table.innerHTML = "Odota hetki...";
		reservation.getTableInfo(openTableNumber, calendarYear, calendarMonth, calendarDay, createMenu);

	}

}

/**
 * Luo pöydänvarausvalikon.
 *
 * @access public
 * @return void
 **/
function createMenu(tableInfo){

	var days = new Array();
	days[1] = "Maanantai";
	days[2] = "Tiistai";
	days[3] = "Keskiviikko";
	days[4] = "Torstai";
	days[5] = "Perjantai";
	days[6] = "Lauantai";
	days[7] = "Sunnuntai";

	var emptyDays = 0;

	var src = "";

	src += "<div style=\"padding: 5px; \">";
	src += "<table style=\"width: 300px;\" cellspacing=\"0\" cellpadding=\"0\" >";
	src += "<tr>";
	src += "<td style=\"text-align: center; font-size: 22px; font-weight: bold; background-color: #ffffff;\">";
	src += openTableNumber;
	src += "</td>";
	src += "<td style=\"text-align: right; vertical-align: center; background-color: #ffffff;\">";
	src += "<a href=\"javascript:void(0)\" onClick=\"closeMenus()\"><img style=\"margin-right: 5px;\" border=\"0\" src=\"/images/bookingsystem/closeButton.gif\" /></a>";
	src += "</td>";
	src += "</tr>";
	src += "</table>";
	src += "</div>";

	src += "<div style=\"padding: 5px;\">";
	src += "<table style=\"width: 300px;\" cellspacing=\"0\" cellpadding=\"0\" >";
	src += "<tr>";
	src += "<td style=\"font-size: 10px; padding: 5px; width: 290px; background-color: #ffffff;\">";
	src += "Valitse haluamasi myyntipäivä rastittamalla tyhjä ruutu. Hyväksy valintasi painamalla ok. Varattu-tekstillä merkittyjä pöytiä ei voi varata.";
	if (tableInfo[1]["type"] == 2) {
		src += "<br /><br />Tämä on itsepalvelupöytä. Itsepalvelupöydät varataan aina viikon perjantaista seuraavan viikon torstaihin. <a target=\"_blank\" href=\"http://www.kirpputori.com/valtteri\">Lisätietoja</a>.";
	}
	src += "</td>";
	src += "</tr>";
	src += "</table>";
	src += "</div>";


	src += "<div style=\"padding: 5px; \">";
	src += "<table style=\"width: 300px;\" cellspacing=\"0\" cellpadding=\"0\" style=\"border-collapse: none\">";
	for (var i = 1; i <= 7; i++) {

		if (tableInfo[i]["status"] == "available") {
			src += "<tr>";
			src += "<td style=\"background-color: #ffffff; padding: 3px; font-weight: bold\">"+days[i]+"</td>";
			src += "<td style=\"background-color: #ffffff; padding: 3px;\">"+tableInfo[i]["date"]+"</td>";
			src += "<td style=\"background-color: #ffffff; padding: 3px;\">"+tableInfo[i]["price"]+" €</td>";
			src += "<td style=\"background-color: #ffffff; padding: 3px;\"><input type=\"checkbox\" onClick=\"if (this.checked == true) { doReservation("+i+"); } else { deleteFromCart("+openTableNumber+", '"+tableInfo[i]["sqlDate"]+"'); }\" /></td>";
			src += "</tr>";
		} else if (tableInfo[i]["status"] == "reserved") {
			src += "<tr>";
			src += "<td style=\"background-color: #ffffff; padding: 3px; font-weight: bold\">"+days[i]+"</td>";
			src += "<td style=\"background-color: #ffffff; padding: 3px;\">"+tableInfo[i]["date"]+"</td>";
			src += "<td style=\"background-color: #ffffff; padding: 3px;\">"+tableInfo[i]["price"]+" €</td>";
			if (admin) {
				src += "<td style=\"background-color: #ffffff; padding: 3px;\"><span style=\"color: #ff0000\">"+tableInfo[i]["owner"]+"</span></td>";
			} else {
				src += "<td style=\"background-color: #ffffff; padding: 3px;\"><span style=\"color: #ff0000\">Varattu</span></td>";
			}
			src += "</tr>";

			// Admineille lisaksi kommenttirivi.
			if (admin && tableInfo[i]["adminComment"] != "0") {

				src += "<tr>";
				src += "<td style=\"background-color: #ffffff; padding: 3px;\"></td>";
				src += "<td colspan=\"3\" style=\"background-color: #ffffff; padding: 3px;\">"+tableInfo[i]["adminComment"]+"</td>";
				src += "</tr>";


			}

			//src += "<td style=\"padding: 5px; background-color: #ae1703; color: #ffffff; border: 1px solid #000000;\">"+days[i]+"</td>";
		} else {
			emptyDays++;
		}

	}
	if (emptyDays == 7) {
		src += "<td style=\"background-color: #ffffff; padding: 3px;\">Ei varattavissa.</td>";
	}
	src += "</table>";
	src += "</div>";

	// Painikkeet.
	src += "<div style=\"padding: 5px; border: 0px solid #000000;\">";
	src += "<table>";
	src += "<tr>";
	// Tiedot
	if (admin) {
		src += "<td><input type=\"button\" class=\"button\" value=\"Tiedot\" onClick=\"window.location = '/varaus?page=tableInfo&tableNumber="+openTableNumber+"&year="+calendarYear+"&month="+calendarMonth+"&day="+calendarDay+"'\" /></td>";
	}
	// Ok
	if (emptyDays != 7) {
		src += "<td><input style=\"margin-left: 5px\" type=\"button\" class=\"button\" value=\"Ok\" onClick=\"closeMenus()\" /></td>";
	}
	src += "</tr>";
	src += "</table>";
	src += "</div>";

	var table = document.getElementById("tableMenu_" + openTableNumber);
	if (table != null) {
		table.innerHTML = src;
	}

}

/**
 *
 * @access public
 * @return void
 **/
function closeMenus(){

	for (var i = 100; i < 1000; i++) {

		var table = document.getElementById("tableMenu_" + i);

		if (table != null) {
			table.style.visibility = "hidden";
		}
	}

}


var calendarOldColors = new Array();

/**
 *
 * @access public
 * @return void
 **/
function changeColor(id, color){

	for (var i = 1; i <= 7; i++) {
		var obj = document.getElementById(id+i);

		if (obj != null) {
			calendarOldColors[id+i] = obj.style.backgroundColor;
			obj.style.backgroundColor = color;
		}
		//c3c3c3 hover: 8c8c8c
	}

}

function changeColorBack(id){

	for (var i = 1; i <= 7; i++) {
		var obj = document.getElementById(id+i);

		if (obj != null) {
			obj.style.backgroundColor = calendarOldColors[id+i];
		}

	}

}


function toActiveColor(id){

	allToWhite();

	for (var k = 1; k <= 7; k++) {
		calendarOldColors[id+k] = "#cccc9a";
	}

}

/**
 * Muuttaa kaikki kalenterin päivät valkoisiksi. Otan täyden vastuun säälittävästä
 * arkkitehtuurista.
 *
 * @access public
 * @return void
 **/
function allToWhite(){

	for (var q = 1; q <= 12; q++) {
		for (var e = 1; e <= 7; e++) {
			for (var t = 1; t <= 7; t++) {
				var obj = document.getElementById("cal_"+q+"_"+e+"_"+t);
				if (obj != null) {
					obj.style.backgroundColor = "#ffffff";
				}
			}
		}
	}

}

/**
 * Ladataan oikeaan reunaan uusi kalenteri.
 *
 * @access public
 * @return void
 **/
function changeMonth() {

	var obj = document.getElementById("monthSelector");

	if (obj == null) {
		return false;
	}

	var selected = obj.options[obj.selectedIndex].value.split("_");

	//alert(selected[0]);
	//return;

	// Haetaan html-koodi ja otetaan paluuarvo plainina.
	reservation.getMonthHTML(selected[0], selected[1], updateMonth, true);

}

/**
 * Päivitetään oikean reunan kalenteri.
 *
 * @access public
 * @return void
 **/
function updateMonth(data){
	var obj = document.getElementById("smallCalendar");

	if (obj == null) {
		return false;
	}

	obj.innerHTML = data;

	return true;


}

/**
 * Vaihtaa kalenterin päivämäärää ja kutsuu latausfunktiota.
 *
 * @access public
 * @return void
 **/
function changeWeek(year, month, day,refreshactive) {

	/*if(refreshactive==true&&((year==2009&&month==8&&day>=24)||(year==2009&&month>8)||(year>2009))) {
		window.location='/varaus?newtables=true&year=' + year + '&month=' + month + '&day=' + day + '';
		// alert('uusi kartta');
		
	}
	else if(refreshactive==true) {
		window.location='/varaus?&year=' + year + '&month=' + month + '&day=' + day + '';
	//	alert('vanha kartta');
		
	}*/
	// Suljetaan avoimet valikot.
	closeMenus();

	// Pöydät valkoisiksi.
	freeTables();

	// Vaihdetaan päivämäärä.
	calendarYear = year;
	calendarMonth = month;
	calendarDay = day;

	// Sunnuntain päivämäärä.
	var sunday = new Date(year,month-1,day+6);
	document.getElementById("dateArea").innerHTML = "&nbsp;&nbsp;&nbsp;Kirpputoripäivät " + day + "." + month + "." + year + " - " + sunday.getDate() + "." + (sunday.getMonth()+1) + "." + sunday.getFullYear();

	// Ladataan alareunan ohje.
	updateHelp();

	// Ladataan kalenteri.
	loadCalendar();


}


/**
 * Lataa uuden kalenteridatan.
 *
 * @access public
 * @return void
 **/
function loadCalendar(){

	//alert("Haetaan kalenteridata...");
	reservation.getTableData(calendarYear, calendarMonth, calendarDay, updateCalendar);

}

/**
 * Piirtää ruudulle uuden kalenteridatan.
 *
 * @access public
 * @return void
 **/
function updateCalendar(data){

	//alert("Piirretään pöydät.");

	var bgColors = new Array();
	bgColors[0] = "#10d126"; // Vihreä
	bgColors[1] = "#331cda"; // Sininen
	bgColors[2] = "#faf711"; // Keltainen
	bgColors[3] = "#ee5315"; // Punainen
	bgColors[4] = "#f6bb08"; // Oranssi
	bgColors[5] = "#2b2a28"; // Musta

	var colors = new Array();
	colors[0] = "#000000"; // Vihreä
	colors[1] = "#ffffff"; // Sininen
	colors[2] = "#000000"; // Keltainen
	colors[3] = "#ffffff"; // Punainen
	colors[4] = "#000000"; // Oranssi
	colors[5] = "#ffffff"; // Musta


	var errors = "";

	if (typeof(data) != "object") {
		return false;
	}

	// Käydään läpi pöytädata.
	for (var i = 1; i < data.length; i++) {

		// Jos arrayssa on jotain fiksua.
		if (typeof(data[i]["tableNumber"]) != "undefined" && typeof(data[i]["reserved"]) != "undefined") {

			// Väritetään.
			var obj = document.getElementById("table_" + data[i]["tableNumber"]);
			if (obj != null) {
				obj.style.backgroundColor = bgColors[data[i]["reserved"]];
				obj.style.color = colors[data[i]["reserved"]];
			}

		} else {
			errors += "Tuntematon rivi taulukossa.";
		}

	}

	//alert(errors);

}

/**
 * Vapauttaa kaikki pöydät.
 *
 * @access public
 * @return void
 **/
function freeTables(){

	for (var p = 100; p < 1000; p++) {

		var table = document.getElementById("table_" + p);

		if (table != null) {
			table.style.backgroundColor = "#ffffff";
		}
	}

}

/**
 * Tekee varauksen.
 *
 * @access public
 * @return void
 **/
function doReservation(weekDay){

	//alert("Tehdään varaus.");
	reservation.doReservation(openTableNumber, calendarYear, calendarMonth, calendarDay, weekDay, handleReservation);

}

/**
 * Tekee varauksen jälkeiset jutut, eli päivittää ikkunan.
 *
 * @access public
 * @return void
 **/
function handleReservation(data){

	// Suljetaan avoimet valikot.
	//closeMenus();

	// Pöydät valkoisiksi.
	// freeTables();

	// Ladataan kalenteri.
	loadCalendar();

	// Päivitetään varauslista
	getCartContent();
}

/**
 * Päivittää alareunan ohje-ikkunan.
 **/
function updateHelp(){

	reservation.getColorHelp(calendarYear, calendarMonth, calendarDay, handleUpdateHelp, true);

}

/**
 *
 * @access public
 * @return void
 **/
function handleUpdateHelp(data){
	try {
		document.getElementById("colorHelp").innerHTML = data;
	} catch(err) {
		return false;
	}

}



/**
 * Lataa kalenteria uudelleen ja uudelleen.
 *
 * @access public
 * @return void
 **/
function loadCalendarLoop(interval){

	loadCalendar();

	setTimeout("loadCalendarLoop("+interval+")", interval);

}


/*****************************************************************************
 *
 *                                KORITOIMINNOT
 *
 *****************************************************************************/


/**
 * Päivittää varaustilanneikkunan.
 *
 * @access public
 * @return void
 **/
function getCartContent(){

	//alert("getCartContent");
	reservation.getCartContent(updateCart);


}

/**
 * Päivittää ostoskorin tilanteen.
 *
 * @access public
 * @return void
 **/
function updateCart(data){


	var src = "";
	var obj = document.getElementById("cartOutput");
	var priceArea = document.getElementById("priceArea");
	// Vahvistuslomakkeen yhteenveto.
	var cartOutput2 = document.getElementById("cartOutput2");
	var price = 0;

	if (obj == null || priceArea == null) {
		alert("Couln't find output elements.");
		return false;
	}

	cartOutput2.innerHTML = "";

	if (typeof(data) == "object") {
		src += "<table cellspacing=\"2\" cellpadding=\"0\">";
		for (var i = 1; i < data.length; i++) {
			src += "<tr>";
			src += "<td>";
			src += "<input type=\"checkbox\" checked onclick=\"if(confirm('Poistetaanko pöytä korista?')){ deleteFromCart('"+data[i]["tableNumber"]+"', '"+data[i]["sqldate"]+"'); } else { this.checked = true } \">";
			src += "</td>";
			src += "<td>";
			src += "<b>";
			src += data[i]["tableNumber"];
			src += "</b> ";
			src += "</td>";
			src += "<td>";
			src += data[i]["date"];
			src += "</td>";
			src += "<td>";
			src += data[i]["price"];
			src += "€";
			src += "</td>";
			src += "</tr>";



			price += parseInt(data[i]["price"]);

			var type = "Perinteinen kirpputoripöytä ";
			if (data[i]["type"] == 2) {
				type = "Itsepalvelupöytä";
			} else if (data[i]["type"] == 3) {
				type = "Ulkotoripaikka";
			}

			cartOutput2.innerHTML += type + " <b>numero " + data[i]["tableNumber"] + "</b>, " + data[i]["date"] + ", " + data[i]["price"] + " €<br />";


		}
		src += "</table>";
	}

	obj.innerHTML = src;
	priceArea.innerHTML = "Yhteensä: " + price + " €";
	cartOutput2.innerHTML += "<br /><br />Yhteensä: " + price + " € ";

}


/**
 * Tyhjentää korin.
 *
 * @access public
 * @return void
 **/
function emptyCart(){

	reservation.emptyCart();

	// Kori kuntoon.
	getCartContent();

	// Ladataan kalenteri. Jotenkin bugaa, pakko pitää timeouttia.
	loadCalendar();


}

/**
 * Poistaa varauksen korista.
 *
 * @access public
 * @return void
 **/
function deleteFromCart(table, date){

	reservation.deleteFromCart(table, date, getCartContent);

}




/*****************************************************************************
 *
 *                            MAKSUTOIMINNOT
 *
 *****************************************************************************/



/**
 * Varmistaa, että lomake on oikein täytetty.
 *
 * @access public
 * @return void
 **/
function verifyPaymentForm(){

	var nameField = document.getElementById("paymentFormName");
	var phoneField = document.getElementById("paymentFormPhone");
	var emailField = document.getElementById("paymentFormEmail");

	if (nameField.value == "") {
		alert("Nimi on pakollinen tieto.");
		return false;
	}

	if (phoneField.value == "" && emailField.value == "") {
		alert("Puhelinnumero tai sähköpostiosoite on annettava.");
		return false;
	}

	return true;

}



/*****************************************************************************
 *
 *                            UUTISET
 *
 *****************************************************************************/

/**
 *
 * @access public
 * @return void
 **/
function setNews(message){
	try {
		document.getElementById("newsArea").innerHTML = message;
		document.getElementById("newsWindow").style.visibility = "visible";
	} catch(err) {
	}
}