function submitForm()
{	
    if (!document.forms[0].ScheduleUid)
    {
        // do nothing
    }
	else 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;

	//if "Time:" drop down list is empty, disable "buy tickets" button.
	if (!document.forms[0].ShowUid.options[0])
	{
	    document.getElementById(GetClientId("btnBuyTickets")).disabled = true;
	}
	else {
	    document.getElementById(GetClientId("btnBuyTickets")).disabled = false;
	}
	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;
	
	//if "showroom:" drop down list is empty, disable "buy tickets" button.
	if (document.forms[0].ShowDetailsUid.length <= 0) {
	    document.getElementById(GetClientId("btnBuyTickets")).disabled = true;
	}
	else {
	    document.getElementById(GetClientId("btnBuyTickets")).disabled = false;
	}
}
/////////////////////////////////////////////////////


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++) {
	    
	    //below added on feb 23, 2010. It will strip html characters from comedian name in "show date" drop down in bio page.
	    var strippedComedianName = arrShows[i].comedian.replace(/<(.|\n)*?>/g, ''); 
	    
	    document.forms[0].ScheduleUid.options[i + 1] = new Option(arrShows[i].showDate + ' ' + strippedComedianName, arrShows[i].uid, false, false);
	}
	document.forms[0].ScheduleUid.options.selectedIndex = 0;
	updateTimes();
	updateSeatings();
}

function select(date, time, strPrice, strMenu, strRoom, strSmoking) {
    //alert(date + " " + time + " " + strPrice + " " + strMenu + " " + strRoom + " " + strSmoking);
    var strShowRoom = GetShowRoomString(strPrice, strMenu, strRoom, strSmoking); //07232010 Change by Rajan
    
    if (time == '') {
        time = undefined;
    }
    
    var bFoundDate = false;
    var bFoundTime = false;
    var bFoundShowDetailsUid = 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();

						/////////////////////07232010 Change by Rajan
						// see GetShowRoomString() function defintion comment for more information
						if (strShowRoom != '') {
						    for (var k = 0; k < document.forms[0].ShowDetailsUid.length; k++) {
						        if (document.forms[0].ShowDetailsUid.options[k].text == strShowRoom) {
						            bFoundShowDetailsUid = true;
						            document.forms[0].ShowDetailsUid.options.selectedIndex = k;
						        }
						    }						
						}
						/////////////////////
					}
				}
			}
		}
	}
	
	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();
	}
}

/*
created by Rajan on 07232010
Now, in bio page url, we can have 4 extra parameters, based on which "Showroom" dropdown value will be selected
For Eg: http://localhost:3111/comedians/Bio.aspx?Uid=816aaf7c-e64c-11d3-be78-00a0c960873b&ShowDate=7/23/10&ShowTime=8:30p&Price=15&Menu=F&Room=General%20Admission&Smoking=5
*/
function GetShowRoomString(strPrice, strMenu, strRoom, strSmoking) {
    if(strPrice == null || strPrice == '' ||
        strMenu == null || strMenu == '' ||
        strRoom == null ||  strRoom== '' ||
        strSmoking == null || strSmoking  == '')
        return '';
             
    var strShowRoom = '';
    strShowRoom += '$' + strPrice;
        
    if (strMenu.toUpperCase() == "T")
        strShowRoom += ' Full Menu';
    //else if (strMenu.toUpperCase() == "F")
    //  strShowRoom += '';     //if "No Menu", we don't show any string in "showroom" drop down box
        
    strShowRoom += ' ' + strRoom;
        
    if (strSmoking == "0")
        strShowRoom += ' No Preference';
    else if (strSmoking == "1")
        strShowRoom += ' Non-Smoking';
    else if (strSmoking == "2")
        strShowRoom += ' Smoking';

    return strShowRoom;
}



// get asp.net client id
function GetClientId(strid)
{
    var count=document.forms[0].length;
    var i=0;
    var eleName; 
    for (i=0; i < count; i++ )
    {
    eleName=document.forms[0].elements[i].id; 
    pos=eleName.indexOf(strid);
    if(pos>=0)  break;            
    }
    return eleName;
}


// 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;*/
