var gsection;
var gsession;
var seatsReserved;
function purchaseAC(takeAction, http_request) {
	if (http_request.readyState == 4) {
		if (http_request.status == 200) {
			switch(takeAction) {
			case "displaySection":
				startListReservedSeats();
				document.getElementById("prev_link").innerHTML="<a title='return to full auditorium dispaly' href='javascript: startDisplayAuditorium(" + document.getElementById("session").value + ", 0);'>Auditorium Map</a>";
			case "displayAuditorium":
				if(http_request.responseText=='NO ASSIGNED'){
					document.getElementById("assign_seat_map").innerHTML='';
					document.getElementById("prev_link").innerHTML='';
					document.getElementById("purchase_info").style.width="52%";
					startListGA();
				} else if(http_request.responseText=="OTHER"){
					document.getElementById("assign_seat_map").innerHTML='';
					document.getElementById("prev_link").innerHTML='';
					document.getElementById("purchase_info").style.width="52%";
					startShowOtherItems();
				} else {
					document.getElementById("assign_seat_map").innerHTML=http_request.responseText;
					document.getElementById("purchase_info").style.width="85%";
				}
				document.getElementById("status_text").innerHTML="";
				break;
			case "showMovieDetails":
				document.getElementById("auditorium_map").innerHTML=http_request.responseText;
				document.getElementById("auditorium_map").scrollTop=0;
				break;
			case "displaySchedule":
				retarr=http_request.responseText.split("^~");
				document.getElementById("movieQuickLink").innerHTML=retarr[1];
				document.getElementById("auditorium_map").innerHTML=retarr[0];
				document.getElementById("auditorium_map").scrollTop=0;
				break;
			case "confirmPurchase":
				document.getElementById("customer_message").innerHTML="";
				document.getElementById("confirmation").innerHTML=http_request.responseText;
				break;
			case "reserveSeat":
				retarr=http_request.responseText.split("^~");
				if(retarr[0]==0){
					if(retarr[1]=="Transaction Timeout"){
						var retStr="We're sorry, this session has been idle too long.  If you wish to make a purchase, please reload the page and enter your choices again.<br>";
						retStr+='<input type="button" class="btn" value="Reload Page" onClick="window.location.reload()">';
						document.getElementById("auditorium_map").innerHTML=retStr;
					}
				}
				startListReservedSeats();
				document.getElementById("status_text").innerHTML=retarr[1];
				break;
			case "displayTickets":
				document.getElementById("purchase_list").innerHTML=http_request.responseText;
				document.getElementById("status_text").innerHTML="";
				break;
			case "listReservedSeats":
				setSectionReservations(http_request.responseText);
			case "listGA":
				flashTicket();
				if(loadMovies==true) {
					loadMovies=false;
					startDisplaySchedule(document.getElementById('datelist').value);
				}
			case "gaSetQty":
				if(document.getElementById("purchase")) document.getElementById("purchase").disabled=false;
				if (document.getElementById("viewshipping")) document.getElementById("viewshipping").style.display='none';
				retarr=http_request.responseText.split("|");
				seatsReserved=retarr[0];
				if(seatsReserved==-1) {
					document.getElementById("purchase_list").innerHTML=retarr[1];
					break;
				}
				if(retarr[8]=="1") {
					location.href="https://" + location.host + location.pathname + location.search;
				} else {
					cmpHeader("pu_", "tkcimg");
					var sTimeOut=retarr[1];
					document.getElementById("purchase_list").innerHTML=retarr[2];
					document.getElementById("surcharge_line").innerHTML=retarr[3];
					document.getElementById("ticket_total_line").innerHTML=retarr[4];
					document.getElementById("grand_total_line").innerHTML=retarr[5];
					if(retarr[0]==0) {
						if(document.getElementById("purchase")) document.getElementById("purchase").disabled=true;
						incHeader("pu_", "tkcimg");
					}
					
					document.getElementById("status_text").innerHTML="";
					document.getElementById("info_display").scrollTop=0;
					if(retarr[9].length > 25){
						document.getElementById("mvn").lname=retarr[9];
						document.getElementById("mvn").sname=retarr[9].substring(0,21) + "...";
						document.getElementById("mvn").innerHTML=document.getElementById("mvn").sname
						document.getElementById("mvn").onmouseover=function () {this.innerHTML=this.lname;};
						document.getElementById("mvn").onmouseout=function () {this.innerHTML=this.sname;};
					} else {
						document.getElementById("mvn").innerHTML=retarr[9];
					}
					document.getElementById("mvd").innerHTML=retarr[10];
					document.getElementById("mvt").innerHTML=retarr[11];
					document.getElementById("pu_text").innerHTML=retarr[12];
					cmpHeader("st_", "mvcimg");
				}
				break;
			case "setoiTheater":
				startShowOtherItems();
				break;
			case "setCustomMessage":
				document.getElementById("setcustmsg").disabled=false;
				break;
			case "itSetQty":
			case "setItemTheater":
			case "setSingleItem":
			case "showOtherItems":
				if(loadMovies==true) {
					loadMovies=false;
					startDisplaySchedule(document.getElementById('datelist').value);
				}
				if(document.getElementById("purchase")) document.getElementById("purchase").disabled=false;
				if (document.getElementById("viewshipping")) document.getElementById("viewshipping").style.display='inline';
				var resp=makeXML(http_request.responseText);
				if(retText(resp.getElementsByTagName("switchToSecure")[0])=="1") {
					location.href="https://" + location.host + location.pathname + location.search;
				} else {
					cmpHeader("pu_", "tkcimg");
					sTimeOut=0;
					seatsReserved=retText(resp.getElementsByTagName("status")[0]);
					document.getElementById("purchase_info").innerHTML="<div id='prev_link'></div><div id='assign_seat_map'></div>";
					document.getElementById("purchase_info").innerHTML+=serializeXML(selectSingleNode(resp,"/showOtherItems/div[@id='purchase_list']"));
					document.getElementById("purchase_info").innerHTML+=serializeXML(selectSingleNode(resp,"/showOtherItems/div[@id='surcharge_line']"));
					document.getElementById("purchase_info").innerHTML+=serializeXML(selectSingleNode(resp,"/showOtherItems/div[@id='ticket_total_line']"));
					document.getElementById("purchase_info").innerHTML+=serializeXML(selectSingleNode(resp,"/showOtherItems/div[@id='grand_total_line']"));
					document.getElementById("purchase_info").innerHTML+=serializeXML(selectSingleNode(resp,"/showOtherItems/div[@id='confirm_proceed']"));
					if(retText(resp.getElementsByTagName("status")[0])==0) {
						if(document.getElementById("purchase")) document.getElementById("purchase").disabled=true;
						incHeader("pu_", "tkcimg");
					}
					document.getElementById("status_text").innerHTML="";
					document.getElementById("info_display").scrollTop=0;
					document.getElementById("mvn").innerHTML=retText(resp.getElementsByTagName("stName")[0]);
					document.getElementById("mvd").innerHTML="";
					document.getElementById("mvt").innerHTML="";
					document.getElementById("pu_text").innerHTML=retText(resp.getElementsByTagName("headText")[0]);
					cmpHeader("st_", "mvcimg");
				}
				break;
				/*if(loadMovies==true) {
					loadMovies=false;
					startDisplaySchedule(document.getElementById('datelist').value);
				}
				if(document.getElementById("purchase")) document.getElementById("purchase").disabled=false;
				if (document.getElementById("viewshipping")) document.getElementById("viewshipping").style.display='inline';
				var resp=makeXML(http_request.responseText);
				if(retText(resp.getElementsByTagName("switchToSecure")[0])=="1") {
					location.href="https://" + location.host + location.pathname + location.search;
				} else {
					cmpHeader("pu_", "tkcimg");
					sTimeOut=0;
					seatsReserved=retText(resp.getElementsByTagName("status")[0]);
					document.getElementById("purchase_list").innerHTML=retText(resp.getElementsByTagName("purchaseList")[0]);
					document.getElementById("surcharge_line").innerHTML=retText(resp.getElementsByTagName("scdis")[0]);
					document.getElementById("ticket_total_line").innerHTML=retText(resp.getElementsByTagName("tkdis")[0]);
					document.getElementById("grand_total_line").innerHTML=retText(resp.getElementsByTagName("gtdis")[0]);
					if(resp.getElementsByTagName("singles")[0]!==undefined){
						var singles = resp.getElementsByTagName("singles")[0].childNodes;
						for(var x=0;x<singles.length;x++){
							if(singles[x].nodeType==1){
								document.getElementById("purchase_list").innerHTML+="<div style='text-align: left;font-size: 120%;'>" + singles[x].nodeName + " - Please Choose One</div>";
								document.getElementById("purchase_list").innerHTML+=retText(singles[x]);
							}
						}
					}
					document.getElementById("purchase_list").innerHTML+=retText(resp.getElementsByTagName("edgreeting")[0]);
					document.getElementById("confirm_proceed").innerHTML=retText(resp.getElementsByTagName("proceed")[0]) ;
					if(retText(resp.getElementsByTagName("status")[0])==0) {
						if(document.getElementById("purchase")) document.getElementById("purchase").disabled=true;
						incHeader("pu_", "tkcimg");
					}
					document.getElementById("status_text").innerHTML="";
					document.getElementById("info_display").scrollTop=0;
					document.getElementById("mvn").innerHTML=retText(resp.getElementsByTagName("stName")[0]);
					document.getElementById("mvd").innerHTML=retText(resp.getElementsByTagName("stDate")[0]);
					document.getElementById("mvt").innerHTML=retText(resp.getElementsByTagName("stTime")[0]);
					document.getElementById("pu_text").innerHTML=retText(resp.getElementsByTagName("headText")[0]);
					cmpHeader("st_", "mvcimg");
				}
				break;*/
			case "purchaseTickets":
				retarr=http_request.responseText.split("|");
				if(retarr[0]==1){
					var toDo="purchaseTickets";
					posstr="toDo=" + toDo;
					if(retarr[2]==0) {
						document.getElementById('progresstxt').innerHTML="Theater Contacted, Placing Order";
						document.getElementById('progThCt').style.background='green';
						makePOSTRequest('backend/purchase_be.php','toDo=purchaseTickets','purchaseTickets', purchaseAC);
					} else if(retarr[2]==1) {
						document.getElementById('progresstxt').innerHTML="Order from Theater confirmed, charging Credit Card";
						document.getElementById('progOrdTx').style.background='green';
						makePOSTRequest('backend/purchase_be.php','toDo=purchaseTickets','purchaseTickets', purchaseAC);
					} else { 
						document.getElementById('progChargeCC').style.background='green';
						document.getElementById('progChargeCC').innerHTML="Credit Charge<br>Successful";
						alert("Your purchase was successful!");
						document.getElementById("confirmation").innerHTML=retarr[1];
						document.getElementById("ccnum").value="";
						document.getElementById("cardtype").innerHTML="";
						document.getElementById("csvalid").innerHTML="";
						document.getElementById("cvv2").value="";
						document.getElementById("exmo").selectedIndex=0;
						document.getElementById("exyr").selectedIndex=0;
						document.getElementById("agreeterm").checked=false;
						document.getElementById("purchase").disabled=true;
						seatsReserved=0;
						document.getElementById("status_text").innerHTML="Purchase Successful";
						clearPurchaseInfo();
					}
				} else {
					document.getElementById('progresstxt').innerHTML+="<br><span style='color: red;'>" + retarr[1] + "</span>";
					alert("Your purchase Failed!");
					document.getElementById("status_text").innerHTML=retarr[1];
					if(retarr[2]==0){
						document.getElementById('progThCt').style.background='red';
					} else if(retarr[2]==1){
						document.getElementById('progOrdTx').style.background='red';
					} else if (retarr[2]==2){
						document.getElementById('progChargeCC').style.background='red';
					}
					flashStatus();
					document.getElementById("confPurchase").disabled=false;
					document.getElementById("purchase").disabled=false;
				}
				document.body.style.cursor='default';
				break;
			case "getFullDesc":
				var retarr=http_request.responseText.split("^~");
				document.getElementById('mv_desc_' + retarr[1]).innerHTML=retarr[2];
				document.getElementById("status_text").innerHTML="";
				break;
			case "answerSurvey":
				document.getElementById('survey').innerHTML="<b>Thank you for your feedback!</b>";
				break;
			case "resetSession":
				location.href="https://" + location.host + location.pathname
				/*clearMovieHeader();
				clearPurchaseHeader();
				clearCustomerHeader();
				loginDisplay();
				document.getElementById("confirmation").innerHTML="";
				document.getElementById("customer_message").innerHTML="";
				seatsReserved=0;
				startGetState();*/
			}
		} else {
			alert('There was a problem with the request. '+http_request.status);
		}
	}
}

function startGetFullDesc(mvkey){
	var toDo="getFullDesc";
	posstr="toDo=" + toDo;
	posstr+="&mvKey=" + mvkey;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}
function startDisplayAuditorium(session, warn) {
	if(seatsReserved==1 && warn==1){
		var resp=confirm("You may only reserve seats for one showing per transaction, changing shows will clear your current seat selections, do you with to proceed?");
		if(!resp) return;
	}
	document.getElementById('prev_link').innerHTML='';
	seatsReserved=0;
	document.getElementById('session').value=session;
	var toDo="displayAuditorium";
	posstr="toDo=" + toDo;
	posstr+="&session=" + session;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startDisplaySection(session, section) {
	var toDo="displaySection";
	posstr="toDo=" + toDo;
	gsession=session;
	gsection=section;
	posstr+="&session=" + session;
	posstr+="&section=" + section;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startDisplaySchedule(cdate){
	var toDo="displaySchedule";
	posstr="toDo=" + toDo;
	posstr+="&cdate=" + cdate;
	clearPurchaseInfo();
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startDisplayTickets(){
	var toDo="displayTickets";
	posstr="toDo=" + toDo;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startGASetQty(tkkey, tkqty){
	var toDo="gaSetQty";
	posstr="toDo=" + toDo;
	posstr+="&tkkey=" + tkkey;
	posstr+="&tkqty=" + tkqty;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startITSetQty(oikey, oiqty){
	var toDo="itSetQty";
	posstr="toDo=" + toDo;
	posstr+="&oikey=" + oikey;
	posstr+="&oiqty=" + oiqty;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startSetoiTheater(itth){
	var toDo="setoiTheater";
	posstr="toDo=" + toDo;
	posstr+="&oitheater=" + itth;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startSetSingleItem(oikey){
	var toDo="setSingleItem";
	posstr="toDo=" + toDo;
	posstr+="&oikey=" + oikey;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startListGA(){
	var toDo="listGA";
	posstr="toDo=" + toDo;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startReserveSeat(selseat){
	selseat.setAttribute("class", "isseat");
	selseat.setAttribute("className", "isseat");
	var toDo="reserveSeat";
	si=selseat.id.split("~");
	posstr="toDo=" + toDo;
	posstr+="&seat=" + si[2];
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startListReservedSeats(){
	var toDo="listReservedSeats";
	posstr="toDo=" + toDo;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startPurchaseTickets(reserve){
	if(document.getElementById('agreeterm').checked==false && reserve==false){
		alert("You must read and agree to the terms of purchase by checking the appropriate box.");
	} else if(document.getElementById("ccnum").value=="" && reserve==false){
		alert("Please enter a credit card number.");
	} else {
		document.getElementById("confPurchase").disabled=true;
		document.getElementById("purchase").disabled=true;
		var toDo="purchaseTickets";
		posstr="toDo=" + toDo;
		posstr+="&cc=" + document.getElementById("ccnum").value;
		posstr+="&exm=" + document.getElementById("exmo").value;
		posstr+="&exy=" + document.getElementById("exyr").value;
		posstr+="&cvv=" + document.getElementById("cvv2").value;
		posstr+="&tosa=" + String(document.getElementById("agreeterm").checked);
		posstr+="&reserve=" + String(reserve);
		if(document.getElementById('progChargeCC')) document.getElementById('progChargeCC').style.background='#808080';
		if(document.getElementById('progOrdTx')) document.getElementById('progOrdTx').style.background='#808080';
		if(document.getElementById('progThCt')) document.getElementById('progThCt').style.background='#808080';
		makePOSTRequest("https://" + webSite + "/backend/purchase_be.php",posstr,toDo, purchaseAC);
		document.body.style.cursor='wait';
		document.getElementById("status_text").innerHTML="Your request is being processed, this may take a few moments";
		document.getElementById('progresstxt').innerHTML="Initiating communications with the theater, this can take a few moments.";
		flashStatus();
	}
}

function startReleaseReservtion(lutrans){
	if(confirm("This will release the seats in this transaction and they will be available for general purchase, do you wish to proceed?")){
		var toDo="releaseReservation";
		posstr="toDo=" + toDo;
		posstr+="&lutrans=" + lutrans;
		makePOSTRequest("backend/purchase_be.php", posstr, toDo, userAC);
	}
}

function startConfirmPurchase(){
	var toDo="confirmPurchase";
	posstr="toDo=" + toDo;
	//posstr+="&cc=" + document.getElementById("ccnum").value.substring(11);
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startShowMovieDetails(mvkey, det){
	var toDo="showMovieDetails";
	posstr="toDo=" + toDo;
	posstr+="&mvKey=" + mvkey;
	if(det) posstr+="&det=t";
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startAnswerSurvey(survey){
	var toDo="answerSurvey";
	posstr="toDo=" + toDo;
	posstr+="&survey=" + survey;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function startShowOtherItems() {
	var toDo="showOtherItems";
	posstr="toDo=" + toDo;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
	slidedown('purchase_info');
}

function startSetCustomMessage() {
	var toDo="setCustomMessage";
	posstr="toDo=" + toDo;
	posstr+="&custommessage=" + document.getElementById("custommessage").value;
	makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
}

function setSectionReservations(response){
	var retarr=response.split("|");
	var cbarr=document.getElementById("assign_seat_map").getElementsByTagName("input");
	for(var x=0;x < cbarr.length;x++){
		if (cbarr[x].type=="checkbox"){
			cbarr[x].parentNode.setAttribute("class", "isseat");
			cbarr[x].parentNode.setAttribute("class", "isseat");
			cbarr[x].disabled=false;
			cbarr[x].checked=false;
		}
	}
	var curEle;
	for(var x=6;x < retarr.length; x++){
		selarr=retarr[x].split("^~");
		curEle=document.getElementById(selarr[0]);
		if(curEle){
			if(selarr[1]==0){
				curEle.parentNode.setAttribute("class", "isseat reserved");
				curEle.parentNode.setAttribute("className", "isseat reserved");
				curEle.checked=false;
				curEle.disabled=true;
			} else {
				curEle.parentNode.setAttribute("class", "isseat reserved_this_ses");
				curEle.parentNode.setAttribute("className", "isseat reserved_this_ses");
				curEle.checked=true;
				curEle.disabled=false;
			}
		}
	}
}

function startResetSession() {
	if(confirm("Resetting this page will clear all selected movies and tickets and log you out.  Do you wish to proceed?")){
		var toDo="resetSession";
		posstr="toDo=" + toDo;
		makePOSTRequest("backend/purchase_be.php",posstr,toDo, purchaseAC);
	}
}

function cardCheck(){
	var ccf=document.getElementById('ccnum');
	ccf.value=ccf.value.replace(/ /g,"");
	document.getElementById('cardtype').innerHTML= typeOfCard(ccf.value);
	if(isValidCreditCard(ccf.value)){
		document.getElementById('csvalid').innerHTML="<span style='color: #0f0;'>Valid</span> <a href='javascript:csInvalid();'>What Does This Mean?</a>";
	} else {
		document.getElementById('csvalid').innerHTML="<span style='color: #f00;'>Invalid</span> <a href='javascript:csInvalid();'>What Does This Mean?</a>";
	}
}

function showMovieListings(toview){
	if(document.getElementById("ml_ntw")) setBtnImg("ml_ntw", "sh_cmp", "sh_inc");
	if(document.getElementById("ml_imax")) setBtnImg("ml_imax", "sh_cmp", "sh_inc");
	if(document.getElementById("ml_threed")) setBtnImg("ml_threed", "sh_cmp", "sh_inc");
	if(document.getElementById("ml_alpha")) setBtnImg("ml_alpha", "sh_cmp", "sh_inc");
	if(document.getElementById("imax_titles")) document.getElementById("imax_titles").style.display='none';
	if(document.getElementById("threed_titles")) document.getElementById("threed_titles").style.display='none';
	if(document.getElementById("ntw_titles")) document.getElementById("ntw_titles").style.display='none';
	if(document.getElementById("alpha_titles")) document.getElementById("alpha_titles").style.display='none';
	if(document.getElementById("advanced_titles")) {
		if(toview=='ntw') {
			document.getElementById("advanced_titles").style.display='block';
		} else {
			document.getElementById("advanced_titles").style.display='none';
		}
	}
	document.getElementById(toview + "_titles").style.display='block';
	setBtnImg("ml_" + toview, "sh_inc", "sh_cmp");
}

// Funtion to return the type of credit card
function typeOfCard(number) {
	/* 
	//	Card Prefixes
	//
	//	Mastercard	51-55
	//	Visa		4
	//	AmEx		34,37
	//	Discover	6011
	*/

	var firstNumber = number.substring(0,1);
	var firstThreeNumbers = number.substring(0,3);

	if (firstNumber == 4) {
		return "VISA";
	} 

	var firstTwoNumbers = number.substring(0,2);
	if (firstTwoNumbers > 50 && firstTwoNumbers < 56) {
		return "MASTERCARD";
	}

	if (firstTwoNumbers == 34 || firstTwoNumbers == 37) {
		return "AMEX";
	}

	var firstFourNumbers = number.substring(0,4);
	if (firstFourNumbers == 6011) {
		return "DISCOVER";
	}
	return "UNKNOWN";
}

// Function that determines whether a credit card number is valid
// Please note that a valid credit card number is not essentially a
// credit card in good standing.
function isValidCreditCard(number) {
	var total = 0;
	var flag = 0;
	for (var i=(number.length - 1);i>=0; i--) {
		if (flag == 1) {
			var digits = number.charAt(i) * 2;
			if (digits > 9) digits -= 9;
			total += digits;
//			var reminder = digits % 10;
//			var quotient = (digits - reminder) / 10;
//			total = total + parseInt(reminder);
//			total = total + parseInt(quotient);
			flag = 0;
		} else {
			total = total + parseInt(number.charAt(i));
			flag = 1;
		}
	}
	if ((total%10) == 0) {
		return true;
	} else {
		return false;
	}
}

