/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// Component:	listEvents
//
// Description:	Creates a list with all shows
//
// Requires:	This component requires the inclusion of the following javascript files:
//					streamline/components/stlDhtmlxCommon/stlDhtmlxCommon.js
//					dhtmlx/codebase/dhtmlxcommon.js
//	
// Copyright:	2010 Joost Brugman, Brugman Holding B.V.
//
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function listEvents(idContainer)
{
	var that = this;

	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Inheritance: stlWebComponent
	//
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.inheritFrom_stlWebComponent = stlWebComponent;
	this.inheritFrom_stlWebComponent(idContainer);
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Language table
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.initLanguages = function()
	{
		this.lang.en.txtExpected					= "Expected";
		
		this.lang.en.txtSunday						= "Sunday";
		this.lang.en.txtMonday						= "Monday";
		this.lang.en.txtTuesday						= "Tuesday";
		this.lang.en.txtWednesday					= "Wednesday";
		this.lang.en.txtThursday					= "Thursday";
		this.lang.en.txtFriday						= "Friday";
		this.lang.en.txtSaturday					= "Saturday";
		
		this.lang.en.txtFreeEntrance				= "Free entrance";
		this.lang.en.txtReserveTickets				= "Reserve";
		this.lang.en.txtBuyTickets					= "Buy";
		
		this.lang.en.txtEdit						= "edit";
		this.lang.en.txtRemove						= "remove";

		this.lang.en.txtConfirmRemove1				= "Are you sure that you want to remove the event titled";
		this.lang.en.txtConfirmRemove2				= "";
		

		this.lang.nl.txtExpected					= "Verwacht";

		this.lang.nl.txtSunday						= "Zondag";
		this.lang.nl.txtMonday						= "Maandag";
		this.lang.nl.txtTuesday						= "Dinsdag";
		this.lang.nl.txtWednesday					= "Woensdag";
		this.lang.nl.txtThursday					= "Donderdag";
		this.lang.nl.txtFriday						= "Vrijdag";
		this.lang.nl.txtSaturday					= "Zaterdag";

		this.lang.nl.txtFreeEntrance				= "Gratis toegang";
		this.lang.nl.txtReserveTickets				= "Reserveren";
		this.lang.nl.txtBuyTickets					= "Kopen";

		this.lang.nl.txtEdit						= "bewerken";
		this.lang.nl.txtRemove						= "verwijderen";

		this.lang.nl.txtConfirmRemove1				= "Weet je zeker dat je de voorstelling met de titel";
		this.lang.nl.txtConfirmRemove2				= "wilt verwijderen";
	}

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	init()
	//
	// Description:	Initializes the form
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.init = function ()
	{
		var loader = this.getSync("Op=Get" + (this.adminMode ? "&Mode=Admin" : ""));

		var index;
	
		var ID;
		var	DT;
		var	title;
		var	description;
		var	ticketPriceDoor;
		var	ticketPriceDoorRedux;
		var	ticketPricePresale;
		var	ticketPricePresaleRedux;
		var	ticketPercentageBTW;
		var	ticketAllowRedux;
		var	prefReservationOption;
		var	prefReservationLink;
		var	prefReservationPopup;
		var	prefSalesOption;
		var	prefSalesLink;
		var	prefSalesPopup;

		var elementIndex;
		var htmlEntry;	
		var htmlContent;
		var mydate;
		var myday;
		var myhours;
		var myminutes;
		var lastMonth = 0;
		var htmlMonth ="";
	
		htmlContent = "";
		var arrEvents = loader.getElementsByTagName("event");
		
		var validatorAmount = new stlValidator_Number_Amount();
		validatorAmount.decimalPoint = ",";
		
		var arrIDs = new Array();
		var arrIDsIndex = 0;
		for(index=0; index < arrEvents.length; index++)
		{
			var arrFields = new Array();
			for(elementIndex=0; elementIndex < arrEvents[index].childNodes.length; elementIndex++)
			{
				var value = "";
				if(arrEvents[index].childNodes[elementIndex].childNodes != undefined)
					if(arrEvents[index].childNodes[elementIndex].childNodes[0] != undefined)
						value = arrEvents[index].childNodes[elementIndex].childNodes[0].nodeValue;
			
				if(value == undefined)
					value = "";
			
				arrFields[arrEvents[index].childNodes[elementIndex].nodeName] = value;
			}
			
			if(arrFields["ID"] == undefined)
				continue;
			
			arrIDs[arrIDsIndex] = arrFields["ID"];
			arrIDsIndex++;
			
			if(arrFields["dtMonth"] != lastMonth)
			{

				if(this.adminMode)
				{
					htmlMonth += "<h2>" + arrFields["dtMonth"] + " " + arrFields["dtYear"] + "</h2>";
					htmlContent += htmlMonth;
					htmlMonth = "";
				}
				else
				{
					if(htmlMonth != "")
						htmlMonth += "</div><div class=\"mainitemfooter\"></div>";
					htmlContent += htmlMonth;
					htmlMonth = "";
						
					htmlMonth  = "<div class=\"mainitemtitle\"></div>";
					htmlMonth += "<div class=\"mainitem\">";
					htmlMonth += "<h1>" + arrFields["dtMonth"] + " " + arrFields["dtYear"] + "</h1>";
				}
			}
			
			htmlEntry  = "";
			htmlEntry += "";	

			htmlEntry += "<table class=\"schedule\">";
			if(this.adminMode)
			{
				htmlEntry += " <colgroup width=\"120px\"></colgroup>";
				htmlEntry += " <colgroup width=\"*\"></colgroup>";
				htmlEntry += " <colgroup width=\"140px\"></colgroup>";
				htmlEntry += " <colgroup width=\"100px\"></colgroup>";
			}
			else
			{
				htmlEntry += " <colgroup width=\"120px\"></colgroup>";
				htmlEntry += " <colgroup width=\"*\"></colgroup>";
				htmlEntry += " <colgroup width=\"150px\"></colgroup>";
			}

			htmlEntry += 				" <tr class=\"odd\">";
			
			if(arrFields["DTIsExpected"] == 0)
			{
				htmlEntry += 			"  <td class=\"date\">";
				htmlEntry +=  			   arrFields["dtDay"];
				htmlEntry += 			"   <span class=\"calendar\">" + arrFields["dtDate"] + "</span><br /><br />" + arrFields["dtHour"] + ":" + arrFields["dtMinute"];
				htmlEntry += 			"  </td>";
			}
			else
			{
				htmlEntry += 			"  <td class=\"date\">";
				htmlEntry +=  			"  <span class=\"calendar\">" + this.lang.current.txtExpected + "</span>";
				htmlEntry += 			"  </td>";
			}
			htmlEntry += 				"  <td>";
			
			if(arrFields["EventLink"] == "")
				htmlEntry += 			"<a id=\"" + this.subElementId + ".linkTitle."  + arrFields["ID"] + "\" >" + arrFields["Title"] + "</a>";
			else
				htmlEntry += 			"<a id=\"" + this.subElementId + ".linkTitle."  + arrFields["ID"] + "\" href=\"" + arrFields["EventLink"] + "\">" + arrFields["Title"] + "</a>";
			
			htmlEntry += 				"   <br/>";
			htmlEntry += 				"   " + "<p>" + arrFields["Description"].replace("\n", "</p><p>") + "</p>" + "";
			htmlEntry += 				"  </td>";
			
			if(arrFields["Venue"] == 0)
				venueLink =		"   <p><a href=\"" + (arrFields["othervenueLink"] == "" ? "#" : arrFields["othervenueLink"]) + "\">" + arrFields["othervenueName"] + "</a></p>";
			else
				venueLink =		"   <p><a href=\"" + arrFields["VenueLink"] + "\">" + arrFields["VenueName"] + "</a></p>";
			
			
			if(this.adminMode)
			{
				// The Following section for admin mode only
				htmlEntry += 			"  <td class=\"details\">";
				htmlEntry += 			venueLink;
				htmlEntry += 			"  </td>";

				htmlEntry += 			"  <td class=\"details\">";
				htmlEntry += 			"   <a id=\"" + this.subElementId + ".linkEdit." 	 + arrFields["ID"] + "\" href=\"#\">" + this.lang.current.txtEdit + "</a><br />";
				htmlEntry += 			"   <a id=\"" + this.subElementId + ".linkRemove." + arrFields["ID"] + "\" href=\"#\">" + this.lang.current.txtRemove + "</a><br />";
				htmlEntry += 			"  </td>";
			}
			else
			{
				// The Following section for live mode only.
				htmlEntry +=			"  <td class=\"details\">";
				
				// Add link to venue
				htmlEntry += 				venueLink;
				
				// Add price at the door, including reduced price

				htmlEntry +=			"   <div>";
				htmlEntry +=			"    <p>";
				htmlEntry +=	 			  (arrFields["ticketPriceDoor"] == 0 ? this.lang.current.txtFreeEntrance : "&euro; " + validatorAmount.toPresentation(arrFields["ticketPriceDoor"]));
				if(arrFields["ticketAllowRedux"] == 1)
				{
					htmlEntry +=		"     / ";
					htmlEntry +=			  (arrFields["ticketPriceDoorRedux"] == 0 ? this.lang.current.txtFreeEntrance : "&euro; " + validatorAmount.toPresentation(arrFields["ticketPriceDoorRedux"]));
				}
				htmlEntry +=			"    </p>";

				// Add reservation option
				if((arrFields["prefReservationOption"] == 0) && (arrFields["prefSalesOption"] != 0) && (arrFields["ticketPricePresale"] != 0))
/* Fixen */			htmlEntry +=		"    <p><a href=\"noreservationsobuy.php\">At the door</a></p>";
				if(arrFields["prefReservationOption"] == 1)
/* Fixen */			htmlEntry +=		"    <p><a href=\"reservetickets.php?Event=" + arrFields["ID"] + "\">" + this.lang.current.txtReserveTickets + "</a></p>";
				if(arrFields["prefReservationOption"] == 2)
/* Fixen */			htmlEntry +=		"    <p><a href=\"" + arrFields["prefReservationLink"] + "\" " + (arrFields["prefReservationLinkPopup"] == 1 ? "target=\"_blank\"" : "") + ">"  + this.lang.current.txtReserveTickets + "</a></p>";
				
				htmlEntry +=			"   </div>";

				if((arrFields["prefSalesOption"] != 0) && (arrFields["ticketPricePresale"] != 0))
				{

					htmlEntry +=		"   <div>";
					htmlEntry +=		"    <p>";
					htmlEntry +=	 		  "&euro; " + validatorAmount.toPresentation(arrFields["ticketPricePresale"]);
					if((arrFields["ticketAllowRedux"] == 1) && (arrFields["ticketPricePresaleRedux"] != 0))
					{
						htmlEntry +=	"     / ";
						htmlEntry +=		  "&euro; " + validatorAmount.toPresentation(arrFields["ticketPricePresaleRedux"]);
					}
					htmlEntry +=		"    </p>";
				if(arrFields["prefSalesOption"] == 1)
/* Fixen */			htmlEntry +=		"    <p><a href=\"buytickets.php?Event=" + arrFields["ID"] + "\">" + this.lang.current.txtBuyTickets + "</a></p>";
				if(arrFields["prefSalesOption"] == 2)
/* Fixen */			htmlEntry +=		"    <p><a href=\"" + arrFields["prefSalesLink"] + "\" " + (arrFields["prefSalesPopup	"] == 1 ? "target=\"_blank\"" : "") + ">"  + this.lang.current.txtBuyTickets + "</a></p>";
				
				
				
				}

				htmlEntry +=		"  </td>";
			}
			

			// The Following section for schedule mode only

			htmlEntry += " </tr>";
			htmlEntry += "</table>";
			
			htmlMonth += htmlEntry;

		}

		if(this.adminMode == false)
		{
			if(htmlMonth != "")
				htmlMonth += "</div><div class=\"mainitemfooter\"></div>";
		}
		htmlContent += htmlMonth;		

		this.elContainer.innerHTML = htmlContent;

		// Add events to links and such in each row.
		
		for(index=0; index < arrIDs.length; index++)
		{
			if(this.adminMode)
			{
				document.getElementById(this.subElementId + ".linkEdit."   + arrIDs[index]).onclick = function() { that.linkEdit_onclick(this); return false; } ;
				document.getElementById(this.subElementId + ".linkRemove." + arrIDs[index]).onclick = function() { that.linkRemove_onclick(this); return false; } ;
			}
		}
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	refresh();
	//
	// Description:
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.refresh = function()
	{
		this.init();
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	linkEdit_onclick();
	//
	// Description:
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.linkEdit_onclick = function(element)
	{
		var arrSegments = element.id.split(".");
		var idEvent = arrSegments[arrSegments.length - 1];

		if(this.onedit != null)
			this.onedit(idEvent);
	}

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	linkRemove_onclick();
	//
	// Description:
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.linkRemove_onclick = function(element)
	{
		var arrSegments = element.id.split(".");
		var idEvent = arrSegments[arrSegments.length - 1];
		
		if(!confirm(this.lang.current.txtConfirmRemove1 + " \"" + document.getElementById(this.subElementId + ".linkTitle." + idEvent).innerHTML + "\" " + this.lang.current.txtConfirmRemove2 + "?"))
			return;
		
		this.removeEvent(idEvent);

		this.refresh();

		if(this.onremove != null)
			this.onremove(idEvent);
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	removeEvent
	//
	// Description:
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.removeEvent = function(idEvent)
	{
		this.getSync("Op=Remove&ID=" + idEvent);
	}

	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	setAdminMode
	//
	// Description:
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	this.setAdminMode = function(modeOn)
	{
		this.adminMode = modeOn;
	}
	
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//
	// Function:	Constructor
	//
	///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
		this.subElementId				= idContainer + ".listEvents";
		this.cssClassRootName			= "listEvents";

		this.setUriServerComponent(stlApp.getAppComponentsPath() + "listEvents/listEvents.php");

		this.initLanguages();

		this.onedit						= null;
		this.onremove					= null;

		this.setAdminMode(false);
}


