//Load the schedule.xml file, cross browser
var remotePurchaseURL="https://www.retriever-tickets.com/page.cfm/ID/1/PG/3";//Where they can buy tickets
var sidVar="SessionID";//the variable name for the showing ID at the purchasing site
var tidVar="TheatreID";//the variable name for the Theater ID at the purchasing site
var midVar="movieID";//the variable name for the Movie ID at the purchasing site.
var movieInfoURL="http://www.retriever-tickets.com/functions/moviedisplay.cfm?movieid=<movieID>&KeepThis=true&TB_iframe=true&height=400&width=600";
	if (document.implementation && document.implementation.createDocument)
{
	xmlDoc = document.implementation.createDocument("", "", null);
	xmlDoc.async=false;
	xmlDoc.load("schedule.xml");
}
else if (window.ActiveXObject)
{
	xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async=false;
	xmlDoc.load("schedule.xml")
	xmlDoc=xmlDoc.documentElement;
}
else
{
	alert('Your browser can\'t handle this script');
}

//Cross browser extraction of text in a node
function retText(node){
	if(window.ActiveXObject){
		return node.text;
	} else {
		return node.textContent;
	}
}

//Create a table of movies and times
function xpTest(){
	//Grab the year from the local form
	var staYear=document.getElementById('curyear').value;
	if(!staYear){//if it isn't set, use todays date
		var staDate=new Date();
	} else {
		var staMonth=document.getElementById('curmonth').value;
		var staDay=document.getElementById('curday').value;
		var staDate=new Date(staYear,staMonth-1,staDay);
	}
	var rightNow=new Date();//So we can only have links on movies that are still coming up
	var endDate=new Date(staDate.getFullYear(),staDate.getMonth(),staDate.getDate());
	endDate.setDate(staDate.getDate()+1);//Show a days worth of movies
	var staDay=staDate.format("yyyyMMdd")+"035900";//Earliest movie is midnight the day it shows
	var endDay=endDate.format("yyyyMMdd")+"040000";//Latest movie is 1am the following day
	var oldTable=document.getElementById("movieShowingsTable");//Assign a variable to the existing table so we can replace it later
	var newEl = document.createElement('TABLE');
	newEl.id="movieShowingsTable";
	newEl.className="movTbl";
	var tmp = document.createElement('TBODY');
	newEl.appendChild(tmp);
	daRow=document.createElement('TR');
	daRow.className="curDateRow";
	daContainer=document.createElement('TD');
	daContainer.className="curDateCell";
	daContainer.colSpan="2";
	daData=document.createTextNode("Showing For " + staDate.format("EE NNN d, yyyy") + " - It is now " + rightNow.format("EE NNN d h:mma"));
	daContainer.appendChild(daData);
	daRow.appendChild(daContainer);
	tmp.appendChild(daRow);
	var movies=xmlDoc.getElementsByTagName("Movie");
	var TID=retText(xmlDoc.getElementsByTagName('Cinema_ID')[0]);
	var showArr=new Array();
	var showings=xmlDoc.getElementsByTagName("Session");//Grab all the sessions
	for(var showing=0;showing<showings.length;showing++){//Fill showArr with only relevent Sessions
		showDate=retText(showings[showing].getElementsByTagName('Date_time')[0]);
		if(showDate > staDay && showDate < endDay){
			mi=String(retText(showings[showing].getElementsByTagName('Movie_ID')[0]));
			si=String(retText(showings[showing].getElementsByTagName('Session_ID')[0]));
			pg=String(retText(showings[showing].getElementsByTagName('Price_group_code')[0]));
			if(!showArr[mi]) showArr[mi]=[];
			showArr[mi][si]=[showDate,pg];
		}
	}
	var tickTypes=xmlDoc.getElementsByTagName("Price");
	var tickets=Array();
	for(var tickType=0;tickType<tickTypes.length;tickType++){
		gc=String(retText(tickTypes[tickType].getElementsByTagName('Price_group_code')[0]));
		tn=String(retText(tickTypes[tickType].getElementsByTagName('Ticket_type_description')[0]));
		tp=retText(tickTypes[tickType].getElementsByTagName('Ticket_Price')[0])/100;
		if(!tickets[gc]) tickets[gc]="";
		tickets[gc]+=tn + "...$"+tp.toFixed(2)+"\n";
	}
	for(var i=0;i<movies.length;i++){//step through each movie
		var moRow = document.createElement('TR');
		moRow.className="movNameRow";
		var moContainer = document.createElement('TD');
		moContainer.className="movNameCell";
		var raContainer=document.createElement('SPAN');
		var moRating=retText(movies[i].getElementsByTagName('Rating')[0]);
		if(moRating=="R"){
			raContainer.className="movRatingRSpan";
		} else {
			raContainer.className="movRatingSpan";
		}
		moI=String(retText(movies[i].getElementsByTagName('Movie_ID')[0]));
		var moA=document.createElement('A');
		moA.href=movieInfoURL.replace('<movieID>',moI);
		moA.className="thickbox";
		moA.title=retText(movies[i].getElementsByTagName('Movie_Name')[0]);
		var moN= document.createTextNode(retText(movies[i].getElementsByTagName('Movie_Name')[0]));
		var moR=document.createTextNode("(" + moRating + ")");
		moA.appendChild(moN);
		moContainer.appendChild(moA);
		raContainer.appendChild(moR);
		moContainer.appendChild(raContainer);
		moRow.appendChild(moContainer);
		var oldDate=new Date(0);
		shRow=document.createElement('TR');
		shRow.className="movTimesRow";
		shContainer=document.createElement('TD');
		shContainer.className="movTimesCell";
		var opArr=new Array();
		if(showArr[moI]){//if the Movie is showing on this day
			for(var si in showArr[moI]){
				var showDate=new Date.parseString(showArr[moI][si][0], "yyyyMMddHHmmss");
				opData=document.createTextNode(showDate.format("h:mma"));
				opDiv=document.createTextNode(" ");
				if(!showDate.isBefore(rightNow) && remotePurchaseURL!=""){
					opContainer=document.createElement('A');
					opContainer.className="movShowTimeLink";
					opContainer.href=remotePurchaseURL + "/" + tidVar + "/"+TID + "/" + midVar + "/" + moI + "/" + sidVar + "/"+si ;
					opContainer.title=tickets[showArr[moI][si][1]];
					opContainer.target="_blank";
					opContainer.appendChild(opData);
					opArr[opArr.length++]=new addShow(showArr[moI][si][0],opContainer);
					//shContainer.appendChild(opContainer);
				} else {
					opContainer=document.createElement('SPAN');
					opContainer.className="movShowTimePast";
					opContainer.appendChild(opData);
					opArr[opArr.length++]=new addShow(showArr[moI][si][0],opContainer);
					//shContainer.appendChild(opData);
				}
				//shContainer.appendChild(opDiv);
			}
			opArr.sort(timeSort);
			//alert(opArr.length);
			for(ti=0;ti<opArr.length;ti++){
				shContainer.appendChild(opArr[ti].item);
				opDiv=document.createTextNode(" ");
				shContainer.appendChild(opDiv);
			}
			moRow.appendChild(shContainer);
			//shRow.appendChild(shContainer);
			tmp.appendChild(moRow);
			//tmp.appendChild(shRow);
		}
	}
	document.getElementById('writeroot').replaceChild(newEl, oldTable);//Replace the existing table with the new one
	tb_init('a.thickbox, area.thickbox, input.thickbox');
	imgLoader = new Image();// preload image
	imgLoader.src = tb_pathToImage;
}

function addShow(vtime,vitem){
	this.time=vtime;
	this.item=vitem;
}

function timeSort(a,b){
	var x = a.time;
	var y = b.time;
	return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}
//Fill in the select list with dates ranging from today to the max date in the xml file
function populateSelect(){
	var dmindate=new Date();
	var showings=xmlDoc.getElementsByTagName('Session');
	fmaxdate="";
	for (var showing=0;showing<showings.length; showing++){
		if(retText(showings[showing].getElementsByTagName('Date_time')[0]) > fmaxdate) {
			fmaxdate=retText(showings[showing].getElementsByTagName('Date_time')[0]);//get the Max Date
		}
		
	}
	var dmaxdate=new Date.parseString(fmaxdate, "yyyyMMddHHmmss");
	while(dmindate <=dmaxdate){//Fill in the Select List
		var elOptNew = document.createElement('option');
		elOptNew.text = dmindate.format("EE NNN d, yyyy");
		elOptNew.value = dmindate.format("MM/dd/yyyy");
		var elSel = document.getElementById('setDate');
		dmindate.setDate(dmindate.getDate()+1);
		try {
			elSel.add(elOptNew, null); // standards compliant; doesn't work in IE
		}
		catch(ex) {
			elSel.add(elOptNew); // IE only
		}
	}
}

function setDisplayDate(newDate){
	dateArr=newDate.split("/");
	document.getElementById('curyear').value=dateArr[2];
	document.getElementById('curmonth').value=dateArr[0];
	document.getElementById('curday').value=dateArr[1];
	xpTest();
}
