function submitForm()
{	
	if(document.forms[0].ScheduleUid.selectedIndex == 0)
	{
		document.forms[0].ScheduleUid.focus();
		return alert('Please select a show first.');
	}
	document.forms[0].submit();
}

// global variables -->
var arrShows = new Array();
var m_nSelDateIndex = 0;

// contructor for show date
function ShowDate(showDate, comedian, uid)
{
	this.showDate = showDate;
	this.comedian = comedian;
	this.uid = uid;
	this.times = new Array();
	this.addShow= addShow;
	return this;
}

function addShow(show)
{		
	this.times[this.times.length] = show;
	//sorting show time if there are more than one
	if(this.times.length > 1)
	{
		for(var i=this.times.length-2;i>=0;i--)
		{
			if(getTimeInMinutes(this.times[i].time) > getTimeInMinutes(this.times[i+1].time))
			{
				this.times[i+1] = this.times[i];
				this.times[i] = show;
			}
			else
				break;
		}
	}
}

// constructor for show time
function ShowTime(uid, time)
{
	this.uid = uid;
	this.time = time;
	this.seatings = new Array();
	this.addSeating = addSeating;
	return this;
}

function addSeating(seating)
{
	this.seatings[this.seatings.length++] = seating;
		
/*	 OLD LOGIC TO SORT PRICE THEN SECTION/ROOM
	// sort by higest price and name alphabetically
	var price_new = parseFloat(seating.price.split(' ')[0].substr(1));
	for(var i=this.seatings.length-2;i>=0;i--)
	{
		var price_high = parseFloat(this.seatings[i].price.split(' ')[0].substr(1));
		// skip if already sorted
		if(price_high > price_new)
			break;
		if(price_high < price_new || this.seatings[i].room > seating.room)
		//if(this.seatings[i].room > seating.room || price_high < price_new)
		{
			// swap them
			this.seatings[i+1] = this.seatings[i];
			this.seatings[i] = seating;
		}	
	}
*/

	//////////////////////////////////////
	// now, we are just sorting by section name/room - not by price
	// doing reverse bubble sort
	var x = this.seatings.length-1;
	while((x>0) && (this.seatings[x-1].room > this.seatings[x].room))
	{
	    var temp = this.seatings[x-1];
	    this.seatings[x-1] = this.seatings[x];
	    this.seatings[x] = temp;
		x = x-1;
	}
	
	
}

/////////////////////////////////////////////////////
// DATE MODIFIED - FEB 26, 2009
// constructor for seating
/* ORIGINAL 
function Seating(room, price, uid)
{
	this.room  = room;
	this.price = price;
	this.uid   = uid;
	return this;
}
*/

// MODIFIED by Rajan to add smoking & non smoking capacity in Seating object
// if smoking/nonsmoking capacity is zero, we will not show that option in combo box in comedian bio page
// constructor for Seating class
function Seating(room, price, uid, smokingCapacity, nonSmokingCapacity)
{
	this.room  = room;
	this.price = price;
	this.uid   = uid;
	this.smokingCapacity = smokingCapacity;
	this.nonSmokingCapacity = nonSmokingCapacity;
	return this;
}
/////////////////////////////////////////////////////


function updateTimes()
{
	var nSelIndex = document.forms[0].ScheduleUid.selectedIndex;
	document.forms[0].ShowUid.options.length = 0;
	if(nSelIndex == 0)
		document.forms[0].ShowUid.options[0] = new Option('Choose a time', '');
	else
	{
		for(var i=0; i < arrShows[nSelIndex-1].times.length; i++)
		{
			document.forms[0].ShowUid.options[i] = new Option('Show ' + (i+1)+ ' ' + arrShows[nSelIndex-1].times[i].time, arrShows[nSelIndex-1].times[i].uid, false, true);
		}
	}
	document.forms[0].ShowUid.selectedIndex = 0;
	updateSeatings();
}

var best_seating = true;

/////////////////////////////////////////////////////
// DATE MODIFIED - FEB 26, 2009
// MODIFIED by Rajan to add smoking & non smoking capacity check 
// if smoking/nonsmoking capacity is zero, we will not show that option in combo box in comedian bio page
function updateSeatings()
{ 
	var nSelIndex = document.forms[0].ScheduleUid.selectedIndex;
	document.forms[0].ShowDetailsUid.options.length = 0; 
	if(nSelIndex == 0)
		document.forms[0].ShowDetailsUid.options[0] = new Option('Select a section', '');
	
	else
	{
		var nShowIndex = document.forms[0].ShowUid.selectedIndex;
		var seatings = arrShows[nSelIndex-1].times[nShowIndex].seatings;
		var j = 0; // counter for seats catagory options combo box - right most 3rd one in bio page
		for(var i=0; i < seatings.length; i++)
		{
			
			var room = seatings[i].room.replace(/^\s*/g, '');
			if(!best_seating)
			{
				// modified code
				var arrSplitedStr = seatings[i].price.split(" ");
				//alert("arrSplitedStr[1]:" + arrSplitedStr[1]);
				if(arrSplitedStr[1] == 'No')
				{
					if((seatings[i].smokingCapacity > 0) && (seatings[i].nonSmokingCapacity > 0))
					{
						// removing 'best' seat option for list
						//document.forms[0].ShowDetailsUid.options[3*i] = new Option(arrSplitedStr[0] + ' ' + room + ' best', '0' + seatings[i].uid + room, false, false);
						
						/* // now, using j as a counter instead of i
						document.forms[0].ShowDetailsUid.options[3*i] = new Option(arrSplitedStr[0] + ' ' + room, '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[3*i+1] = new Option(arrSplitedStr[0] + ' ' + room + ' smoking', '2' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[3*i+2] = new Option(arrSplitedStr[0] + ' ' + room + ' non-smoking', '1' + seatings[i].uid + room, false, false);
						*/
						
						//document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room, '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room + ' No Preference', '0' + seatings[i].uid + room, false, false);
						j++;
						document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room + ' Smoking', '2' + seatings[i].uid + room, false, false);
						j++;
						document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room + ' Non-Smoking', '1' + seatings[i].uid + room, false, false);
						j++;
					}
					else if(seatings[i].smokingCapacity > 0)
					{
						//now, using j as a counter instead of i
						//document.forms[0].ShowDetailsUid.options[i] = new Option(arrSplitedStr[0] + ' ' + room + ' smoking', '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room + ' Smoking', '0' + seatings[i].uid + room, false, false);
						j++;
					}
					else if(seatings[i].nonSmokingCapacity > 0)
					{
						// now, using j as a counter instead of i
						//document.forms[0].ShowDetailsUid.options[i] = new Option(arrSplitedStr[0] + ' ' + room + ' non-smoking', '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room + ' Non-Smoking', '0' + seatings[i].uid + room, false, false);
						j++;
					}
				}
				else
				{
					if((seatings[i].smokingCapacity > 0) && (seatings[i].nonSmokingCapacity > 0))
					{
						// removing 'best' seat option for list
						//document.forms[0].ShowDetailsUid.options[3*i] = new Option(seatings[i].price + ' ' + room + ' best', '0' + seatings[i].uid + room, false, false);
						/*
						// now, using j as a counter instead of i
						document.forms[0].ShowDetailsUid.options[3*i] = new Option(seatings[i].price + ' ' + room , '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[3*i+1] = new Option(seatings[i].price + ' ' + room + ' smoking', '2' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[3*i+2] = new Option(seatings[i].price + ' ' + room + ' non-smoking', '1' + seatings[i].uid + room, false, false);
						*/
						
						//document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room , '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room + ' No Preference', '0' + seatings[i].uid + room, false, false);
						j++;
						document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room + ' Smoking', '2' + seatings[i].uid + room, false, false);
						j++;
						document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room + ' Non-Smoking', '1' + seatings[i].uid + room, false, false);
						j++;
					}
					else if(seatings[i].smokingCapacity > 0)
					{
						// now, using j as a counter instead of i
						//document.forms[0].ShowDetailsUid.options[i] = new Option(seatings[i].price + ' ' + room + ' smoking', '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room + ' Smoking', '0' + seatings[i].uid + room, false, false);
						j++;
					}
					else if(seatings[i].nonSmokingCapacity > 0)
					{
						// now, using j as a counter instead of i
						//document.forms[0].ShowDetailsUid.options[i] = new Option(seatings[i].price + ' ' + room + ' non-smoking', '0' + seatings[i].uid + room, false, false);
						document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room + ' Non-Smoking', '0' + seatings[i].uid + room, false, false);
						j++;
					}
				}
				
				// old code
				// document.forms[0].ShowDetailsUid.options[3*i] = new Option(seatings[i].price + ' ' + room + ' best', '0' + seatings[i].uid + room, false, false);
				// document.forms[0].ShowDetailsUid.options[3*i+1] = new Option(seatings[i].price + ' ' + room + ' smoking', '2' + seatings[i].uid + room, false, false);
				// document.forms[0].ShowDetailsUid.options[3*i+2] = new Option(seatings[i].price + ' ' + room + ' non-smoking', '1' + seatings[i].uid + room, false, false);
			}
			else
			{
				// modified code
				var arrSplitedStr = seatings[i].price.split(" ");
				if(arrSplitedStr[1] == 'No')
				{
					// now, using j as a counter instead of i
					//document.forms[0].ShowDetailsUid.options[i] = new Option(arrSplitedStr[0] + ' ' + room, '0' + seatings[i].uid + room, false, false);
					document.forms[0].ShowDetailsUid.options[j] = new Option(arrSplitedStr[0] + ' ' + room, '0' + seatings[i].uid + room, false, false);
					j++;
				}
				else
				{
					// now, using j as a counter instead of i
					//document.forms[0].ShowDetailsUid.options[i] = new Option(seatings[i].price + ' ' + room, '0' + seatings[i].uid + room, false, false);
					document.forms[0].ShowDetailsUid.options[j] = new Option(seatings[i].price + ' ' + room, '0' + seatings[i].uid + room, false, false);
					j++;
				}
				
				// old code
				// document.forms[0].ShowDetailsUid.options[i] = new Option(seatings[i].price + ' ' + room, '0' + seatings[i].uid + room, false, false);
			}
		}
	}
	document.forms[0].ShowDetailsUid.options.selectedIndex = 0;
}
/////////////////////////////////////////////////////


function init()
{
	document.forms[0].ScheduleUid.options.length=0;
	document.forms[0].ScheduleUid.options[0] = new Option('Select a date', false, false);
	for(var i = 0; i < arrShows.length; i++)
	{
		document.forms[0].ScheduleUid.options[i+1]= new Option(arrShows[i].showDate + ' ' + arrShows[i].comedian, arrShows[i].uid, false, false);
	}
	document.forms[0].ScheduleUid.options.selectedIndex = 0;
	updateTimes();
	updateSeatings();
}

function select(date, time)
{
    var bFoundDate = false;
    var bFoundTime = false;
	for(var i=0;i<document.forms[0].ScheduleUid.length;i++)
	{
		if(document.forms[0].ScheduleUid.options[i].text.search(date) != -1)
		{
			bFoundDate = true;
			document.forms[0].ScheduleUid.options.selectedIndex = i;
			updateTimes();
			if(time)
			{
				for(var j=0;j<document.forms[0].ShowUid.length;j++)
				{
					if(document.forms[0].ShowUid.options[j].text.search(time) != -1)
					{
						bFoundTime = true;
						document.forms[0].ShowUid.options.selectedIndex = j;
						updateSeatings();
					}
				}
			}
		}
	}
	
	if(!bFoundDate || (typeof(time) != 'undefined' && !bFoundTime))
	{
		var strMessage = 'Selected show date ' + ((typeof(time) != 'undefined')?'and time':'') + ' is no longer available for reservation.\n';
		if(arrShows.length > 0)
			strMessage += 'Please select a different date and/or time.';
		alert(strMessage);
		if(arrShows.length > 0)
			history.back();
	}
}


// samples
/*date = new ShowDate('12/25', 'Flip Orley', '{9B6BC93F-CDF2-11D3-BE74-00A0C960873B}');

show = new ShowTime('8:30pm{B623FDEE-A324-4AD0-81EC-D65204925736}', '8:30pm')
seat = new Seating('Floor', '$12.00 Full Menu', '{075444D7-49EC-4517-A51F-876A7F35B705}', 122, 0); // now, added smoking/nonsmoking seats capacity in Seating object constructor - by Rajan
show.addSeating(seat);
date.addShow(show);

show = new ShowTime('10:30pm{553585E4-E7C6-4553-92A2-2BBC54921D13}', '10:30pm')
seat = new Seating('Floor', '$12.00 Full Menu', '{8605516D-7F59-4C90-BA1B-9A3C74EA36CE}', 0, 122);
show.addSeating(seat);
date.addShow(show);

arrShows[0] = date;

date = 	new ShowDate('12/27', 'Gary Owen', '{CA459D7C-4C0E-11D4-9254-005004C2A4A8}');
show =  new ShowTime('8:30pm{9C8016B2-8911-48E8-97CC-7518A70999BD}', '8:30pm')
seat = new Seating('Floor', '$12.00 Full Menu ', '{6D4295CB-877A-478C-B75A-F833572725DC}', 122, 122);
show.addSeating(seat);
date.addShow(show);
arrShows[1] = date;*/