function getHTTPObject() {
	var xmlhttp;
	if(window.ActiveXObject) {
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(e)
		{
			xmlhttp = false;
		}
	}
	else
	if (!xmlhttp && typeof XMLHttpRequest != 'undefined') {
		try {
			xmlhttp = new XMLHttpRequest();
		} catch (e) {

		}
	}
	return xmlhttp;
}

function urlencode(str) {
str = escape(str);
str = str.replace('+', '%2B');
str = str.replace('%20', '+');
str = str.replace('*', '%2A');
str = str.replace('/', '%2F');
str = str.replace('@', '%40');
return str;
}

function urldecode(str) {
str = str.replace('+', ' ');
str = unescape(str);
return str;
}

var http = getHTTPObject();

var region = "";
var genre = "";
var date = "";
var price = "";
var organiser = "";
var venue = "";
var artist = "";
var student = "";
var keyword = "";


//ignore detail for flags in future
function ignoreInFuture(detail, id)
{
	if ( http.readyState == 0 || http.readyState == 4 ){
		document.getElementById(id).innerHTML = detail;
		document.getElementById(id).style.textDecoration = 'line-through';
		http.open("GET", "/xml/?action=ignore_in_future&detail=" + detail + "&code=xkllpsoolw&dummy=" + new Date().getTime(), true);
		http.onreadystatechange = handleResponseDoNothing;
		http.send(null);
	} else {
		setTimeout('ignoreInFuture("' + detail + '", "' + id + '");', 500);
	}
}

function handleResponseDoNothing() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
		}
	}
}

//variable which indicates whether the site has finished laoding the events.
var finishedLoadingEvents = false;

function getEvents(region, genre, date, price, organiser, venue, artist, student) {
	if ( http.readyState == 0 || http.readyState == 4 ){
		this.region = region;
		this.genre = genre;
		this.date = date;
		this.price = price;
		this.organiser = organiser;
		this.venue = venue;
		this.artist = artist;
		this.student = student;
		//http.open("GET", "/xml/?action=get_events&region=" + region + "&genre=" + genre + "&date=" + date + "&price=" + price + "&organiser=" + organiser + "&venue=" + venue + "&dummy=" + new Date().getTime(), true);
		http.open("GET", "/buy_tickets/xml/events.xml", true);
		http.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 04:58:08 GMT");
		http.onreadystatechange = handleResponseGetEvents;
		http.send(null);
	} else {
		setTimeout('getEvents(' + region + ', ' + genre + ', ' + date +  ', ' + price + ', ' + organiser + ', ' + venue + ', ' + artist +  ', ' + student + ')', 50);
	}
}

function getEvents2(region, genre, date, price, organiser, venue, artist, student, keyword) {
	if ( http.readyState == 0 || http.readyState == 4 ){
		this.region = region;
		this.genre = genre;
		this.date = date;
		this.price = price;
		this.organiser = organiser;
		this.venue = venue;
		this.artist = artist;
		this.student = student;
		this.keyword = keyword;
		//http.open("GET", "/xml/?action=get_events&region=" + region + "&genre=" + genre + "&date=" + date + "&price=" + price + "&organiser=" + organiser + "&venue=" + venue + "&dummy=" + new Date().getTime(), true);
		http.open("GET", "/buy_tickets/xml/events.xml", true);
		http.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 04:58:08 GMT");
		http.onreadystatechange = handleResponseGetEvents;
		http.send(null);
	} else {
		setTimeout('getEvents2("' + region + '", "' + genre + '", "' + date +  '", "' + price + '", "' + organiser + '", "' + venue + '", "' + artist +  '", "' + student + '", "' + keyword +  '")', 50);
	}
}

function handleResponseGetEvents() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
		}

		xmlRoot =  response.documentElement;

		var eventNameNodes = response.getElementsByTagName("event_name");
		var eventIdNodes = response.getElementsByTagName("event_id");
		var venueNameNodes = response.getElementsByTagName("venue_name");
		var venueIdNodes = response.getElementsByTagName("venue_id");
		var venueRegionIdNodes = response.getElementsByTagName("venue_region_id");
		var genreIdsNodes = response.getElementsByTagName("genre_ids");
		var artistIdsNodes = response.getElementsByTagName("artist_ids");
		var ticketPriceNodes = response.getElementsByTagName("ticket_price");
		var eventDateNodes = response.getElementsByTagName("event_date");
		var eventDayNodes = response.getElementsByTagName("event_day");
		var eventDomNodes = response.getElementsByTagName("event_dom");
		var eventMonthNodes = response.getElementsByTagName("event_month");
		var eventMonthNumberNodes = response.getElementsByTagName("event_month_number");
		var eventYearNodes = response.getElementsByTagName("event_year");
		var ticketStudentNodes = response.getElementsByTagName("ticket_student");
		var eventStatusNodes = response.getElementsByTagName("status");
		var eventDescriptionNodes = response.getElementsByTagName("description");

		var eventCount = eventNameNodes.length;

		var result = "<dl class=\"calender\">";

		var previousDate = "";

		var addEvent = true;

		for(var i=0; i < eventNameNodes.length; i++){

			if(region.length > 0)
			{
				if(region != venueRegionIdNodes.item(i).firstChild.nodeValue){
					addEvent = false;
				}
			}

			if(genre.length > 0)
			{
				if(genreIdsNodes.item(i).firstChild.nodeValue.indexOf(','+genre+',') == -1){
					addEvent = false;
				}
			}

			if(artist.length > 0)
			{
				if(artistIdsNodes.item(i).firstChild.nodeValue.indexOf(','+artist+',') == -1){
					addEvent = false;
				}
			}

			if(price.length > 0)
			{
				if(Math.abs(price) < Math.abs(ticketPriceNodes.item(i).firstChild.nodeValue)){
					addEvent = false;
				}
			}

			if(venue.length > 0)
			{
				if(venue != venueIdNodes.item(i).firstChild.nodeValue){
					addEvent = false;
				}
			}

			if(date == '7 Days')
			{
				var nextWeekDate=new Date();
				nextWeekDate.setDate(nextWeekDate.getDate()+7);
				var thisEventDate = new Date();
				thisEventDate.setFullYear(eventYearNodes.item(i).firstChild.nodeValue, (eventMonthNumberNodes.item(i).firstChild.nodeValue-1), eventDomNodes.item(i).firstChild.nodeValue);
				//alert(thisEventDate + "-" + eventDomNodes.item(i).firstChild.nodeValue + "-" + nextWeekDate);
				if(nextWeekDate < thisEventDate){
					addEvent = false;
				}
			}
			else
			if(date.length > 0)
			{
				if(date != eventDateNodes.item(i).firstChild.nodeValue){
					addEvent = false;
				}
			}

			if(student.length > 0)
			{
				if(student == 'not')
				{
					if(ticketStudentNodes.item(i).firstChild.nodeValue == '2')
					{
						addEvent = false;
					}
				}
				if(student == 'only')
				{
					if(ticketStudentNodes.item(i).firstChild.nodeValue != '2')
					{
						addEvent = false;
					}
				}
				if(student == 'offers')
				{
					if(ticketStudentNodes.item(i).firstChild.nodeValue == '0')
					{
						addEvent = false;
					}
				}
			}

			if(keyword.length > 0)
			{
				var keywordArray = keyword.split(" ");
				for(j = 0; j < keywordArray.length; j++)
				{
					if(eventDescriptionNodes.item(i).firstChild.nodeValue.toLowerCase().indexOf(keywordArray[j].toLowerCase()) == -1)
					{
						addEvent = false;
					}
				}
			}

			if(addEvent)
			{
				result = result + "<dl><dt><div style='width: 52px; float: left;'><img src='/img/dates/month/" + eventMonthNodes.item(i).firstChild.nodeValue.toLowerCase() + ".png' alt='" + eventMonthNodes.item(i).firstChild.nodeValue + "' width='38' height='18' /><img src='/img/dates/day/" + eventDomNodes.item(i).firstChild.nodeValue + ".png' alt='" + eventMonthNodes.item(i).firstChild.nodeValue + "' width='38' height='26' /></div></dt>";
				result = result + "<dd><strong><a href='/buy_tickets/events/?id=" + eventIdNodes.item(i).firstChild.nodeValue + "'>" + eventNameNodes.item(i).firstChild.nodeValue.toUpperCase() + "</a></strong></dd>";
				result = result + "<dd><div style='float: right; width: 140px; text-align: right;'> <img src='/img/bullet.gif'> &nbsp; <a href='/buy_tickets/events/?id=" + eventIdNodes.item(i).firstChild.nodeValue + "'>" + eventStatusNodes.item(i).firstChild.nodeValue + "</a></div> <div style='float: right;'><img src='/img/bullet.gif'> &nbsp; <a href='/buy_tickets/events/?id=" + eventIdNodes.item(i).firstChild.nodeValue + "#more_info'>More info</a></div><small>" + venueNameNodes.item(i).firstChild.nodeValue + "</small></dd>";
				result = result + "</dl><br />";
			}
			else
			{
				eventCount--;
			}
			addEvent = true;
		}
		if(eventCount==0)
		{
			result = result + "<tr class='event_listing'><td colspan=2><p><div class='form_errors'><div><h5>¬ No tickets found!</h5><p>There are currently no tickets available that meet your query!</p>";
			if(student == 'not')
			{
				result = result + "<BR /><p>If you are a student, try <a href='JavaScript: //' onclick=\"document.getElementById('student').value = 'all'; document.getElementById('student').checked = 'true'; updateBuyTickets();\">including student events</a> in your search.</p>";
			}
			result = result + "</div></div><div class='form_errors_bottom'></div></td></tr>";
		}
		result = result + "</table>";
		document.getElementById('event_table').innerHTML = result;
		document.getElementById('event_count').innerHTML = eventCount;
		if(document.getElementById('keyword'))
		{
			document.getElementById('keyword').disabled = false;
		}
		keywordUpdateDelayInProgress = false;
	}
}


var rEventNames = new Array();
var rVenueNames = new Array();
var rEventIds = new Array();
var rVenueIds = new Array();
var rGenreIds = new Array();
var rRegionIds = new Array();
var rEventDescriptions = new Array();
var rEventDates = new Array();
var rEventDays = new Array();
var rEventDoms = new Array();
var rEventMonths = new Array();
var rEventMonthNumbers = new Array();
var rEventYears = new Array();
var rTicketStudents = new Array();
var rTicketNames = new Array();
var rEventStatus = new Array();
var rEventFestival = new Array();

function getRefineEventInfo() {
	if(rEventIds.length == 0)
	{
		if ( http.readyState == 0 || http.readyState == 4 ){
			http.open("GET", "/buy_tickets/xml/events.xml", true);
			http.onreadystatechange = handleResponseGetRefineEventInfo;
			http.send(null);
		} else {
			setTimeout('getRefineEventInfo()', 100);
		}
	}
}

function handleResponseGetRefineEventInfo() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
		}
		xmlRoot =  response.documentElement;
	}
}

var updateResultCounter = 0;

function getEvents3(region, genre, date, price, organiser, venue, artist, student, keyword, festival) {

	document.getElementById('event_table').innerHTML = "<img src='/site_images/loadingAnimation.gif'>";
	document.getElementById('event_count').innerHTML = "...";

	var result = "<div>";

	var eventCount = rEventIds.length;

	var previousDate = "";

	for(var i=0; rEventIds[i]; i++)
	{

		addEvent = true;



		if(region.length > 0)
		{
			if(region != rRegionIds[i]){
				addEvent = false;
			}
		}

		if(genre.length > 0)
		{
			if(rGenreIds[i].indexOf(','+genre+',') == -1){
				addEvent = false;
			}
		}

		if(venue.length > 0)
		{
			if(venue != rVenueIds[i]){
				addEvent = false;
			}
		}

		if(festival)
		{
			if(festival == 1 && rEventFestival[i] != 1){
				addEvent = false;
			}
		}

		if(date == '7 Days')
		{
			var nextWeekDate=new Date();
			nextWeekDate.setDate(nextWeekDate.getDate()+7);
			var thisEventDate = new Date();
			thisEventDate.setFullYear(rEventYears[i], (rEventMonthNumbers[i]-1), rEventDoms[i]);
			if(nextWeekDate < thisEventDate){
				addEvent = false;
			}
		}
		else
		if(date.length > 0 && date!= 'Any')
		{
			var mockDate = rEventDoms[i] + "/" + rEventMonthNumbers[i] + "/" + rEventYears[i];
			if(date != mockDate){
				addEvent = false;
			}
		}

		if(student.length > 0)
		{
			if(student == 'not')
			{
				if(rTicketStudents[i] == '2')
				{
					addEvent = false;
				}
			}
			if(student == 'only')
			{
				if(rTicketStudents[i] != '2')
				{
					addEvent = false;
				}
			}
			if(student == 'offers')
			{
				if(rTicketStudents[i] == '0')
				{
					addEvent = false;
				}
			}
		}

		if(keyword.length > 0 && keyword != 'Type anything')
		{
			var keywordArray = keyword.split(" ");
			for(j = 0; j < keywordArray.length; j++)
			{
				var keywordSpecificArray = keywordArray[j].split(":");
				if(keywordSpecificArray[1] && keywordSpecificArray[0]=='ticket') {
					//alert('ticket specific - comparing ' + rTicketNames[i].toLowerCase() + ' with ' + keywordSpecificArray[1].toLowerCase());
					if(rTicketNames[i].toLowerCase().indexOf(keywordSpecificArray[1].toLowerCase()) == -1)
					{
						addEvent = false;
					}
				} else {
					if(rEventDescriptions[i].toLowerCase().indexOf(keywordArray[j].toLowerCase()) == -1)
					{
						addEvent = false;
					}
				}
				keywordSpecificArray = null;
			}
		}

		if(addEvent)
		{
			if(previousDate != rEventDoms[i])
			{
				if(previousDate != "")
				{
					result = result + "</div></div><div class='event_day_bottom'> </div> <BR />";
				}
				result = result + "<div class='event_day_top'></div><div class='event_day_middle' style='padding: 2px 0;'>";
				result = result + "<div style='width: 48px; margin: 3px; float: left;'><img src='/img/dates/month/" + rEventMonths[i] + ".png' alt='" + rEventMonths[i] + "' width='38' height='18' /><img src='/img/dates/day/" + rEventDoms[i] + ".png' alt='" + rEventDoms[i] + "' width='38' height='26' /></div>";
				result = result + "<div style='margin-left: 56px;'><div class='dow_top'></div><div class='dow_middle'><P style='font-weight: bold;'>" + rEventDays[i] + "</P></div><div class='dow_bottom'></div>";
				previousDate = rEventDoms[i];
			}
			result = result + "<div class='dow_top' style='height: 1px; padding: 0; margin: 6px 0 0 0;'></div><div class='dow_middle'>";
			result = result + "<div style='float: right; width: 140px; text-align: right;'><a class='no_style'  href='/buy_tickets/events/?id=" + rEventIds[i] + "#more_info'><img src='/site_images/button_more_info.gif' style='border: 0px;'></a><BR />";
			if(rEventStatus[i] != 'Buy tickets')
			{
				result = result + rEventStatus[i] + "&nbsp; ";
			}
			else
			{
				result = result + "<a class='no_style' href='/buy_tickets/events/?id=" + rEventIds[i] + "'><img src='/site_images/button_buy_tickets.gif' style='border: 0px;'></a>";
			}
			result = result + "</div><strong><a href='/buy_tickets/events/?id=" + rEventIds[i] + "'>" + rEventNames[i] + "</a></strong>";
			result = result + "<BR /><small>" + rVenueNames[i] + "</small>";
			result = result + "</div><div class='dow_bottom'> </div>";
		}
		else
		{
			eventCount--;
		}
		addEvent = true;
	}

	if(eventCount==0)
	{
		result = result + "<p><div class='form_errors'><div><h5>No tickets found!</h5><p>There are currently no tickets available that meet your query!</p>";
		if(student == 'not')
		{
			result = result + "<BR /><p>If you are a student, try <a href='JavaScript: //' onclick=\"document.getElementById('student').value = 'all'; document.getElementById('student').checked = 'true'; updateBuyTickets();\">including student events</a> in your search.</p>";
		}
		result = result + "</div></div><div class='form_errors_bottom'></div>";
	}
	else if(student == 'not')
	{
		result = result + "</div></div><div class='event_day_bottom'> </div> <BR /><div class='form_errors_small'><div><p>If you are looking for a student event <a href='JavaScript: //' onclick=\"document.getElementById('student').value = 'all'; document.getElementById('student').checked = 'true'; updateBuyTickets();\">click here</a> to include them in your search results.</p></div></div><div class='form_errors_small_bottom'></div>";
	}
	result = result + "</div></div><BR />";
	//setTimeout("
	document.getElementById('event_table').innerHTML = result;
	//, 100);
	//setTimeout("
	updateResultCounter++;
	document.getElementById('event_count').innerHTML = eventCount;
	document.getElementById('event_count_p').className = "sub updated";
	if(document.getElementById('results_updated_p'))
	{
		document.getElementById('results_updated_p').innerHTML = "<img src='/img/left_arrow.gif'> Updated: " + eventCount + " events found";
	}
	setTimeout("if(updateResultCounter == '" + updateResultCounter + "') { if(document.getElementById('results_updated_p')) { document.getElementById('results_updated_p').innerHTML = ''; } document.getElementById('event_count_p').className = 'sub'; }", 5000);
	//", 100);
}

function updateBuyTickets()
{
	if(document.getElementById('festival'))
	{
		ajaxGetMatchingEventsAdvanced('','', '',  '', '1', '0');
	}
	else
	{
		ajaxGetMatchingEventsAdvanced(document.getElementById('keyword').value, document.getElementById('venue').value, document.getElementById('genre').value,  document.getElementById('date').value, '0', '0');
	}
}

function generatePassword(passwordBoxId){
	now=new Date();
	num=(now.getSeconds() + 24) * (now.getDate() + 3);
	num=num+1;
	document.getElementById(passwordBoxId).value = "TTS" + num;
	document.getElementById(passwordBoxId + '_confirm').value = "TTS" + num;
}

function clearRefinements(){
	document.getElementById('venue').options[0].selected = true;
	document.getElementById('genre').options[0].selected = true;
	document.getElementById('date').value='Any';
	document.getElementById('keyword').value='Type anything';
	getEvents3('','','','','','','',document.getElementById('student').value, '');
}

function clearRefinements2(){
	document.getElementById('venue').options[0].selected = true;
	document.getElementById('genre').options[0].selected = true;
	setDate3('Any', 'date');
	document.getElementById('keyword').value='Type anything';
	ajaxGetMatchingEventsAdvanced('','','','','','0');
}



var postageOptionsCount = 0;
var postageOptions = new Array(20);

function calculatePostage()
{
	for(var i = 0; i < postageOptionsCount; i++)
	{

	}
}


var latestGetUserRequest = 0;

function getUsers(terms, requestTime) {
	if(requestTime >= latestGetUserRequest) {
		latestGetUserRequest = requestTime;
		if ( http.readyState == 0 || http.readyState == 4 ){
			latestGetUserRequest = requestTime;
			http.open("GET", "/buy_tickets/xml/?action=get_users&terms=" + terms + "&requestTime=" + latestGetUserRequest + "&dummy=" + new Date().getTime(), true);
			http.onreadystatechange = handleResponseGetUsers;
			http.send(null);
		} else {
			setTimeout('getUsers("' + terms + '", "' + requestTime + '")', 500);
		}
	}
}

function handleResponseGetUsers() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){

		}

		xmlRoot =  response.documentElement;

		var requestTimeNodes = response.getElementsByTagName("request_time");
		var requestTime = requestTimeNodes.item(0).firstChild.nodeValue;

		if(requestTime == latestGetUserRequest) {

			var customerDetailNodes = response.getElementsByTagName("customer_details");
			var customerIdNodes = response.getElementsByTagName("customer_id");
			var customerBlacklistNodes = response.getElementsByTagName("customer_blacklist");
			var customerIdArray = "";

			var result = "";

			for(var i=0; i<customerIdNodes.length; i++){
				if(customerBlacklistNodes.item(i).firstChild.nodeValue == '1')
				{
					result = result + "<p style='clear: right;'><strong>" + customerDetailNodes.item(i).firstChild.nodeValue + " [BLACKLISTED]</strong></p>";
					customerIdArray = customerIdArray + customerIdNodes.item(i).firstChild.nodeValue + ",";
				}
				else
				{
					result = result + "<p style='clear: right;'><a href='?set_customer_id=" + customerIdNodes.item(i).firstChild.nodeValue + "'>" + customerDetailNodes.item(i).firstChild.nodeValue + "</a></p>";
					customerIdArray = customerIdArray + customerIdNodes.item(i).firstChild.nodeValue + ",";
				}
			}

			if(customerIdNodes.length > 1)
			{
				result = result + "<br /><p><strong><a href='/operator/control_panel/users/customers/merge/?ids=" + customerIdArray + "' target='_blank'>Merge some or all of these customer accounts into one account <br />(opens in new window with more options)</a></strong></p>";
			}

			if(result == "")
			{
				result = "<P>No results found, please register the user.</P>";
			}

			document.getElementById('matching_customers').innerHTML = result;
		}
	}
}

function autoFillTicketNumbers(val, ticketId, counter){
	for(var i = counter+1; document.getElementById(ticketId+'-'+i); i++)
	{
		val = Math.abs(val) + 1;
		document.getElementById(ticketId+'-'+i).value = val;
	}
}



function getComments(id, entity) {
	if ( http.readyState == 0 || http.readyState == 4 ){
		http.open("GET", "/xml/?action=get_comments&code=xkllpsoolw&entity=" + entity + "&id=" + id + "&dummy=" + new Date().getTime(), true);
		http.onreadystatechange = handleResponseGetComments;
		http.send(null);
	} else {
		setTimeout("getComments(" + orderId + ", '" + entity + "')", 500);
	}
}

function handleResponseGetComments() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
		}

		document.getElementById('say_button').style.backgroundColor = "";
		document.getElementById('say_button').style.color = "";
		document.getElementById('say_button').value = "Say";

		xmlRoot =  response.documentElement;

		var commentNameNodes = response.getElementsByTagName("comment_name");
		var commentDateNodes = response.getElementsByTagName("comment_date");
		var commentCommentNodes = response.getElementsByTagName("comment_comment");

		var result = "";

		for(var i=0; i<commentNameNodes.length; i++){
			result = result + "	<p style='float: right;'><em>" + commentDateNodes.item(i).firstChild.nodeValue + "</em></p>";
			result = result + "	<p><strong>" + commentNameNodes.item(i).firstChild.nodeValue + "</strong></p>";
			result = result + "	<p class='sub' style='border-bottom: 1px solid gray;'>" + commentCommentNodes.item(i).firstChild.nodeValue + "</p>";
		}
		document.getElementById('comment_area').innerHTML = result;
	}
}

function addComment(id, comment, operatorId, entity) {
	if ( http.readyState == 0 || http.readyState == 4 ){
		document.getElementById('say_button').style.backgroundColor = "red";
		document.getElementById('say_button').style.color = "white";
		document.getElementById('say_button').value = "Please Wait...";
		document.getElementById('comment_area').innerHTML = "</P><img src='/site_images/loadingAnimation.gif'> <BR />" + document.getElementById('comment_area').innerHTML;
		htmlComment = textToHTML(comment);
		http.open("GET", "/xml/?action=add_comment&code=xkllpsoolw&entity=" + entity + "&id=" + id + "&operator_id=" + operatorId + "&comment=" + htmlComment + "&dummy=" + new Date().getTime(), true);
		http.onreadystatechange = handleResponseAddComment;
		http.send(null);
	} else {
		setTimeout("addComment(" + orderId + ", '" + comment + "', " + operatorId + ", '" + entity + "')", 500);
	}
}


function handleResponseAddComment() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
			alert ('ERROR!');
		}

		xmlRoot =  response.documentElement;

		var idNodes = response.getElementsByTagName("id");
		var id = idNodes.item(0).firstChild.nodeValue;

		var entityNodes = response.getElementsByTagName("entity");
		var entity = entityNodes.item(0).firstChild.nodeValue;

		document.getElementById('comment_box').value = "";
		//alert(orderId);
		setTimeout("getComments(" + id + ", '" + entity + "')", 500);
	}
}

function textToHTML(text)
{
	//this splits up chunks of text by lines and adds <BR> tags
	var lines = new Array();
	var returnText = "";
	lines = text.split('\n');
	for(var i=0; i<lines.length; i++)
	{
		returnText += lines[i] + "<BR>";
	}
	lines = returnText.split('&');
	var returnText = "";
	var first = true;
	for(var i=0; i<lines.length; i++)
	{
		if(!first)
		{
			returnText += "and";
		}
		returnText += lines[i];
		first=false;
	}
	return returnText;
}

function removeSpeechMarks(text)
{
	//this splits up chunks of text by lines and adds <BR> tags
	var lines = new Array();
	var returnText = "";
	lines = text.split("'");
	for(var i=0; i<lines.length; i++)
	{
		returnText += lines[i] + "`";
	}
	lines = returnText.split('"');
	var returnText = "";
	var first = true;
	for(var i=0; i<lines.length; i++)
	{
		if(!first)
		{
			returnText += "``";
		}
		returnText += lines[i];
		first=false;
	}
	return returnText;
}

/**
 *
 * @access public
 * @return void
 **/
function customTicket(j){
	document.getElementById('ticket_suggestor_'+j).innerHTML = "<input type='text' name='ticket_name_"+j+"' value=''>";
}

//event info arrays for event search
var sEventNames = new Array();
var sVenueNames = new Array();
var sEventIds = new Array();
var sEventDescriptions = new Array();
var sOrganiserNames = new Array();
var sEventDateNodes = new Array();



function getEventInfo() {
	if(sEventIds.length == 0)
	{
		if ( http.readyState == 0 || http.readyState == 4 ){
			http.open("GET", "/buy_tickets/xml/events.xml", true);
			http.onreadystatechange = handleResponseGetEventInfo;
			http.send(null);
		} else {
			setTimeout('getEventInfo()', 100);
		}
	}
}

function handleResponseGetEventInfo() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
			//alert ('ERROR!');
		}

		xmlRoot =  response.documentElement;

		var eventNameNodes = response.getElementsByTagName("distinct_event_name");
		var venueNameNodes = response.getElementsByTagName("distinct_venue_name");
		var eventIdNodes = response.getElementsByTagName("distinct_event_id");
		var eventDateNodes = response.getElementsByTagName("distinct_event_date_for_search");
		var eventDescriptionNodes = response.getElementsByTagName("distinct_description");
		var organsiserNameNodes = response.getElementsByTagName("distinct_organiser");

		//re-initate the arrays to the correct length
		sEventNames = new Array(eventIdNodes.length);
		sVenueNames = new Array(eventIdNodes.length);
		sEventIds = new Array(eventIdNodes.length);
		sEventDescriptions = new Array(eventIdNodes.length);
		sEventDateNodes = new Array(eventIdNodes.length);
		sOrganiserNames = new Array(eventIdNodes.length);

		var alreadyBeenGot = new Array(eventIdNodes.length);

		for(var i=0; i < eventIdNodes.length; i++){
			sEventNames[i] = eventNameNodes.item(i).firstChild.nodeValue;
			sVenueNames[i] = venueNameNodes.item(i).firstChild.nodeValue;
			sEventIds[i] = eventIdNodes.item(i).firstChild.nodeValue;
			sEventDateNodes[i] = eventDateNodes.item(i).firstChild.nodeValue;
			sEventDescriptions[i] = eventDescriptionNodes.item(i).firstChild.nodeValue;
			sOrganiserNames[i] = organsiserNameNodes.item(i).firstChild.nodeValue;
			alreadyBeenGot[i] = eventIdNodes.item(i).firstChild.nodeValue;
		}

		if(buyTicketsPage)
		{
			var eventNameNodes = response.getElementsByTagName("event_name");
			var eventIdNodes = response.getElementsByTagName("event_id");
			var venueNameNodes = response.getElementsByTagName("venue_name");
			var venueIdNodes = response.getElementsByTagName("venue_id");
			var venueRegionIdNodes = response.getElementsByTagName("venue_region_id");
			var genreIdsNodes = response.getElementsByTagName("genre_ids");
			var artistIdsNodes = response.getElementsByTagName("artist_ids");
			var ticketPriceNodes = response.getElementsByTagName("ticket_price");
			var eventDateNodes = response.getElementsByTagName("event_date");
			var eventDayNodes = response.getElementsByTagName("event_day");
			var eventDomNodes = response.getElementsByTagName("event_dom");
			var eventMonthNodes = response.getElementsByTagName("event_month");
			var eventMonthNumberNodes = response.getElementsByTagName("event_month_number");
			var eventYearNodes = response.getElementsByTagName("event_year");
			var ticketStudentNodes = response.getElementsByTagName("ticket_student");
			var eventStatusNodes = response.getElementsByTagName("status");
			var eventDescriptionNodes = response.getElementsByTagName("description");
			var ticketNameNodes = response.getElementsByTagName("ticket_names");
			var eventFestivalNodes = response.getElementsByTagName("festival");

			//re-initate the arrays to the correct length
			rEventNames = new Array(eventNameNodes.length);
			rVenueNames = new Array(venueNameNodes.length);
			rEventIds = new Array(eventIdNodes.length);
			rVenueIds = new Array(venueIdNodes.length);
			rRegionIds = new Array(venueRegionIdNodes.length);
			rGenreIds = new Array(genreIdsNodes.length);
			rEventDescriptions = new Array(eventDescriptionNodes.length);
			rEventDates = new Array(eventDateNodes.length);
			rEventDays = new Array(eventDayNodes.length);
			rEventDoms = new Array(eventDomNodes.length);
			rEventMonths = new Array(eventMonthNodes.length);
			rEventMonthNumbers = new Array(eventMonthNumberNodes.length);
			rEventYears = new Array(eventYearNodes.length);
			rTicketStudents = new Array(ticketStudentNodes.length);
			rTicketNames = new Array(ticketNameNodes.length);
			rEventStatus = new Array(eventStatusNodes.length);
			rEventFestival = new Array(eventFestivalNodes.length);

			for(var i=0; i < eventIdNodes.length; i++){
				rEventNames[i] = eventNameNodes.item(i).firstChild.nodeValue;
				rVenueNames[i] = venueNameNodes.item(i).firstChild.nodeValue;
				rEventIds[i] = eventIdNodes.item(i).firstChild.nodeValue;
				rVenueIds[i] = venueIdNodes.item(i).firstChild.nodeValue;
				rRegionIds[i] = venueRegionIdNodes.item(i).firstChild.nodeValue;
				rGenreIds[i] = genreIdsNodes.item(i).firstChild.nodeValue;
				rEventDescriptions[i] = eventDescriptionNodes.item(i).firstChild.nodeValue;
				rEventDates[i] = eventDateNodes.item(i).firstChild.nodeValue;
				rEventDays[i] = eventDayNodes.item(i).firstChild.nodeValue;
				rEventDoms[i] = eventDomNodes.item(i).firstChild.nodeValue;
				rEventMonths[i] = eventMonthNodes.item(i).firstChild.nodeValue.toLowerCase();
				rEventMonthNumbers[i] = eventMonthNumberNodes.item(i).firstChild.nodeValue;
				rEventYears[i] = eventYearNodes.item(i).firstChild.nodeValue;
				rTicketStudents[i] = ticketStudentNodes.item(i).firstChild.nodeValue;
				rTicketNames[i] = ticketNameNodes.item(i).firstChild.nodeValue;
				rEventStatus[i] = eventStatusNodes.item(i).firstChild.nodeValue;
				rEventFestival[i] = eventFestivalNodes.item(i).firstChild.nodeValue;
			}
			//setTimeout('updateRefineTickets()', 1000);
		}
		finishedLoadingEvents = true;
	}
}


function updateRefineTickets()
{
	if(document.getElementById('student'))
	{
		document.getElementById('loading_bar').style.display = 'none';
		document.getElementById('refine_tickets').style.display = '';
		document.getElementById('student').disabled = false;
		updateBuyTickets();
	}
	else if(document.getElementById('festival'))
	{
		updateBuyTickets();
	} else
	{
		setTimeout('updateRefineTickets()', 1000);
	}
}

var tempSearchTerm = "";
var considerThese = "";
var previousTerm = "";


function getMatchingEvents(term){
	if(finishedLoadingEvents)
	{
		previousTerm = term;
		//assume event info has already been got

		if(term.length == 0)
		{
			//the search box is empty
			result = "<p>Start typing your keywords</p>";
		}
		else
		{
			//split the term up into terms
			term = term.toLowerCase();
			var terms = term.split(' ');

			//considerThese is an array of all the events that need to considered
			considerThese = new Array(sEventNames.length);
			//set all to 1 as initially all should be considered
			for(var i=0; i < sEventNames.length; i++)
			{
				considerThese[i] = '1';
			}

			//go through all the events
			for(var j=0; j < terms.length; j++)
			{
				//go through all the events
				for(var i=0; i < sEventNames.length; i++)
				{
					sAll = sEventNames[i].toLowerCase() + sEventDescriptions[i].toLowerCase() + sVenueNames[i].toLowerCase() + sOrganiserNames[i].toLowerCase();
					if(sAll.indexOf(terms[j]) >= 0 && considerThese[i] == '1')
					{
						//keep it for consideration
					}
					else
					{
						considerThese[i] = '0';
					}
				}
			}


			var result = "";
			//now we have reduced the cinsideration list prepare the result
			for(var i=0; i < considerThese.length; i++)
			{
				if(considerThese[i] == '1')
				{
					result += "<div><p id='search_item_" + sEventIds[i] + "' onmousedown=\"location.href='/buy_tickets/events/?id=" + sEventIds[i] + "';\" onmouseout=\"unsetSearchSelected();\" onmouseover=\"unsetSearchSelected(); setSearchSelected(" + i + ");\" href='#' class='menu_item_1'><strong>" + sEventNames[i] +" (" + sEventDateNodes[i] +")</strong> at " + sVenueNames[i] + "</p></div>";
				}
			}
			if(result.length==0){
				//no results
				result = "<p>There are no matches to your keyword</p>";
			}
		}
		document.getElementById('search_results_box').innerHTML = result;
	}
	else
	{
		setTimeout('getMatchingEvents("' + term + '")', 1000);
		document.getElementById('search_results_box').innerHTML = "<img src='/site_images/loadingAnimation.gif'>";
	}
}

var searchSelected = null;

function setSearchSelected(i){
	searchSelected = i;
	document.getElementById("search_item_" + sEventIds[i]).className = 'menu_item_a1_over';
}

function unsetSearchSelected(){
	if(searchSelected != null && document.getElementById("search_item_" + sEventIds[searchSelected]))
	{
		document.getElementById("search_item_" + sEventIds[searchSelected]).className = 'menu_item_1';
		searchSelected = null;
	}
}

function keyHasBeenPressed(e){
	var keynum;
	if(window.event) // IE
	{
		keynum = e.keyCode;
	}
	else if(e.which) // Netscape/Firefox/Opera
	{
		keynum = e.which;
	}
	if(keynum == '13' && searchSelected != null) //enter
	{
		location.href = "/buy_tickets/events/?id=" + sEventIds[searchSelected];
		return false;
	}
	if(keynum == '40' || keynum == '38') //down //up
	{
		var i = 0;
		if(searchSelected != null)
		{
			i = searchSelected + 1;
		}
		if(keynum == '38')
		{
			i--;
			i--;
		}
		while(considerThese[i])
		{
			if(considerThese[i]== '1')
			{
				unsetSearchSelected();
				setSearchSelected(i);
				break;
			}
			if(keynum == '40')
			{
				i++;
			}
			if(keynum == '38')
			{
				i--;
			}
		}
		return false;
	}
	else
	{
		return true;
	}
}

function getMatchingEvents_2(term){

	//assume event info has already been got

	if(term.length == 0)
	{
		//the search box is empty
		result = "<p>Start typing your keywords</p>";
	}
	else
	{
		//split the term up into terms
		term = term.toLowerCase();
		var terms = term.split(' ');

		//considerThese is an array of all the events that need to considered
		var considerThese = new Array(sEventNames.length);
		//set all to 1 as initially all should be considered
		for(var i=0; i < sEventNames.length; i++)
		{
			considerThese[i] = '1';
		}

		//go through all the events
		for(var j=0; j < terms.length; j++)
		{
			//go through all the events
			for(var i=0; i < sEventNames.length; i++)
			{
				sAll = sEventNames[i].toLowerCase() + sEventDescriptions[i].toLowerCase() + sVenueNames[i].toLowerCase() + sOrganiserNames[i].toLowerCase();
				if(sAll.indexOf(terms[j]) >= 0 && considerThese[i] == '1')
				{
					//keep it for consideration
				}
				else
				{
					considerThese[i] = '0';
				}
			}
		}


		var result = "";
		//now we have reduced the cinsideration list prepare the result
		for(var i=0; i < considerThese.length; i++)
		{
			if(considerThese[i] == '1')
			{
				result += "<div><p><a onmousedown=\"location.href='/buy_tickets/events/?id=" + sEventIds[i] + "';\" href='#' class='menu_item_1'><strong>" + sEventNames[i] + "</strong> at " + sVenueNames[i] + "</a></p></div>";
			}
		}
		if(result.length==0){
			//no results
			result = "<p>There are no matches to your keyword</p>";
		}
	}
	return result;
}

var eventCount =0;


function makeTicketTypeSelected(ticketName, ticketType, updateSubtotal)
{
	var ticketTypeToUnselect = 0;
	if(ticketType == 0)
	{
		 ticketTypeToUnselect = 1;
	}
	if(document.getElementById(ticketName + '_quantity_div_' + ticketType))
	{
		//make the div visible
		document.getElementById(ticketName + '_quantity_div_' + ticketType).style.visibility = 'visible';
		if(document.getElementById(ticketName + '_type_' + ticketType))
		{
			document.getElementById(ticketName + '_type_' + ticketType).checked = true;
		}
		else
		{
			document.getElementById('debug').innerHTML = 'Cant find: ' + ticketName + '_type_' + ticketType;
			//alert('loading');
		}
	}
	if(document.getElementById(ticketName + '_quantity_div_' + ticketTypeToUnselect))
	{
		//set the other select to 0
		if(document.getElementById(ticketName + '_quantity_select_' + ticketTypeToUnselect))
		{
			document.getElementById(ticketName + '_quantity_select_' + ticketTypeToUnselect).value=0;
			//set the connecting subtotal calculator to 0
			document.getElementById('ticket_quantity_' + document.getElementById(ticketName + '_connector_' + ticketTypeToUnselect).value).value = 0;
		}
		//hide the other div
		document.getElementById(ticketName + '_quantity_div_' + ticketTypeToUnselect).style.visibility = 'hidden';
	}
}

var operator = false;
var showQuestionMarks = false;

function showBubble(bubbleId)
{
	if(operator == false)
	{
		document.getElementById('bubble_' + bubbleId).style.visibility = 'visible';
	}
	else
	if(showQuestionMarks)
	{
		document.getElementById('bubble_' + bubbleId).style.visibility = 'visible';
	}
}

function hideBubble(bubbleId){
	document.getElementById('bubble_' + bubbleId).style.visibility = 'hidden';
}


function getRegionId(townName)
{
	var returnRegionId = 0;
	for(var i = 0; towns[i]; i++)
	{
		var thisTown = " " + towns[i];
		if(thisTown.toLowerCase().indexOf(townName.toLowerCase()) > 0)
		{
			returnRegionId = regionIds[i];
		}
	}
	return returnRegionId;
}


function addEmail(emailAddress, keywords)
{
	if(emailAddress.indexOf('@') > 0)
	{
		if(document.getElementById('sign_up_to_mailing_list'))
		{
				document.getElementById('signup_content').innerHTML = "<p>Please Wait</p><img src='/site_images/loadingAnimation.gif' alt='Loading...'>";

		}
		else if(document.getElementById('sign_up_to_mailing_list'))
		{
				//document.getElementById('sign_up_to_mailing_list').innerHTML = "<img src='/site_images/loadingAnimation.gif' alt='Loading...'>";

		}
		if ( http.readyState == 0 || http.readyState == 4 )
		{
			var httpOpen = "/xml/?action=add_email&code=xkllpsoolw&email_address=" + urlencode(emailAddress) + "&keyword=" + keywords;
			for(var i = 0; keywords[i]; i++)
			{
				httpOpen = httpOpen + "&keyword[" + i + "]=" + urlencode(keywords[i]);
			}
			httpOpen = httpOpen + "&dummy=" + new Date().getTime();
			http.open("GET", httpOpen, true);
			http.onreadystatechange = handleResponseAddEmail;
			http.send(null);
		}
		else
		{
			setTimeout('addEmail("' + emailAddress + '", "' + keywords + '")', 500);
		}
	}
	else
	{
		alert('Please enter a valid email address');
	}
}


function handleResponseAddEmail()
{
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
			//alert ('ERROR!');
		}
		if(document.getElementById('signup_content'))
		{
			document.getElementById('signup_content').innerHTML = "";
			document.getElementById('signup_content').innerHTML = "<p><strong>Thank You!</strong><br />You have succesfully signed up and you will be<br />included in future mailings.</p><input id='cancel' type='reset' onclick='$.facebox.close();'; value='Ok '   style='width:50px; margin-top: 10px; display:block; float:left;'>";
		}
		else
		{
			document.getElementById('sign_up_to_mailing_list').innerHTML = "<P><strong>Thank You!</strong><BR />You have succesfully signed up and you will be<BR />included in future mailings.</P>";
		}
	}
}


function jwRemoveChild(id)
{
	document.getElementById(id).parentNode.removeChild(document.getElementById(id));
}
/**
 * this function validate email and its used in getEventReminderEmail.
 */
function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   alert("Invalid E-mail ID")
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Invalid E-mail ID")
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

		 if (str.indexOf(" ")!=-1){
		    alert("Invalid E-mail ID")
		    return false
		 }

 		 return true
	}
// event reminder email
function getEventReminderEmail(event_reminder_email,  event_reminder_name, event_reminder_eventname) {

	if ((event_reminder_email==null)||(event_reminder_email=="")){
		alert("Please Enter your Email ID")
		emailID.focus()
		return false
	}
	if (echeck(event_reminder_email)==false){
		emailID.value=""
		emailID.focus()
		return false
	}
	if ((event_reminder_name==null)||(event_reminder_name==""))
	{
		var event_reminder_name="Customer";
	}
	if ( http.readyState == 0 || http.readyState == 4 ){
		http.open("GET", "/xml/?action=send_event_reminder_email&code=xkllpsoolw&event_reminder_email=" + event_reminder_email + "&event_reminder_name="+ event_reminder_name + "&event_reminder_eventname="+ event_reminder_eventname + "&dummy=" + new Date().getTime(), true);
		http.onreadystatechange = handleResponseGetEventReminderEmail;
		http.send(null);
	} else {
		setTimeout("getEventReminderEmail('" + email + "')", 500);
	}
}

function handleResponseGetEventReminderEmail() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
		}

		document.getElementById('email_button').style.backgroundColor = "";
		document.getElementById('email_button').style.color = "";
		document.getElementById('email_button').value = "Send Email";

		xmlRoot =  response.documentElement;

		var emailNodes = response.getElementsByTagName("reminder_email");
		var subjectNodes = response.getElementsByTagName("reminder_subject");
		var messageNodes = response.getElementsByTagName("reminder_message");

		var result = "";

		for(var i=0; i<emailNodes.length; i++){
			result = result + "	<p style='float: right;'><em>" + emailNodes.item(i).firstChild.nodeValue + "</em></p>";


		}
		document.getElementById('email_area').innerHTML = result;
	}
}
function searchPostcode(postcode)
{
	document.getElementById('searchPostcodeLoadingDiv').innerHTML = "<img src='/site_images/loadingAnimation.gif' alt='Loading...'>";
	if ( http.readyState == 0 || http.readyState == 4 )
	{
		var httpOpen = "/xml/index.1-12.php?action=get_distance_from_shambala&code=xkllpsoolw&postcode=" + urlencode(postcode);
		httpOpen = httpOpen + "&dummy=" + new Date().getTime();
		http.open("GET", httpOpen, true);
		http.onreadystatechange = handleResponseSearchPostcode;
		http.send(null);
	} else {
		setTimeout('searchPostcode("' + postcode + '")', 500);
	}
}


function handleResponseSearchPostcode()
{
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
			//alert ('ERROR!');
		}
		xmlRoot =  response.documentElement;

		var distanceNodes = response.getElementsByTagName("distance");
		if(distanceNodes.item(0))
		{
			var distance = distanceNodes.item(0).firstChild.nodeValue;
			distance = Math.abs(distance) * 2; // round trip
			if(document.getElementById('carbon-offset-no-of-cars'))
			{
				var car_select = document.getElementById('carbon-offset-no-of-cars');
				distance = Math.abs(distance) * Math.abs(car_select.options[car_select.selectedIndex].value);
			}
			document.getElementById('searchPostcodeLoadingDiv').innerHTML = "";
			var distanceTickets = new Array();
			var ticketSelectId = new Array();

			ticketSelectId[0] = "CO2 / 50 miles approx_quantity_select_1";
			ticketSelectId[1] = "CO2 / 100 miles approx_quantity_select_1";
			ticketSelectId[2] = "CO2 / 150 miles approx_quantity_select_1";
			ticketSelectId[3] = "CO2 / 200 miles approx_quantity_select_1";
			ticketSelectId[4] = "CO2 / 250 miles approx_quantity_select_1";
			ticketSelectId[5] = "CO2 / 300 miles approx_quantity_select_1";
			ticketSelectId[6] = "CO2 / 350 miles approx_quantity_select_1";
			ticketSelectId[7] = "CO2 / 400 miles approx_quantity_select_1";

			distanceTickets[0] = 16046;
			distanceTickets[1] = 16047;
			distanceTickets[2] = 16048;
			distanceTickets[3] = 16049;
			distanceTickets[4] = 16050;
			distanceTickets[5] = 16051;
			distanceTickets[6] = 16052;
			distanceTickets[7] = 16053;
			var i = 0;
			while(distance > (i * 50) + 99)
			{
				i++;
			}
			document.getElementById('ticket_row_' + distanceTickets[i]).style.display = '';
			document.getElementById('ticket_row_' + distanceTickets[i]).className = 'event_listing shaded';
			document.getElementById(ticketSelectId[i]).selectedIndex = '1';
			document.getElementById(ticketSelectId[i]).onchange();
			updateSubtotal();
			for(var j=0; j<=7; j++)
			{
				if(j != i && document.getElementById(ticketSelectId[j]))
				{
					document.getElementById(ticketSelectId[j]).selectedIndex = '0';
					document.getElementById(ticketSelectId[j]).onchange();
				}
			}
		}
		else
		{
			document.getElementById('searchPostcodeLoadingDiv').innerHTML = "";
			alert("We couldn't ind that postcode, please try another!");
		}
	}
}


function updateEmailSendEticket(newemail,newemail2, orderID)
{

	if(newemail.indexOf('@') < 1 || newemail2.indexOf('@') < 1)
	{

		alert('Please enter a valid email address');
	}
	else if(newemail != newemail2)
	{
		alert('Please enter same email address');
	}
	else
	{


		if ( http.readyState == 0 || http.readyState == 4 )
		{
			var httpOpen = "/xml/?action=update_email_send_eticket&code=xkllpsoolw&newemail=" + urlencode(newemail) + "&orderID=" + orderID;

			httpOpen = httpOpen + "&dummy=" + new Date().getTime();
			http.open("GET", httpOpen, true);
			http.onreadystatechange = handleResponseUpdateEmailSendEticket;
			http.send(null);
		} else {
			setTimeout('updateEmailSendEticket("' + newemail + '", "' + newemail2 + '", "' + orderID + '")', 500);
		}

	}

}


function handleResponseUpdateEmailSendEticket() {
	if (http.readyState == 4) {
			var response = http.responseXML;
			if(!response || !response.documentElement){
		}

		document.getElementById('email_button').style.backgroundColor = "";
		document.getElementById('email_button').style.color = "";
		document.getElementById('email_button').value = "Send Email";

		xmlRoot =  response.documentElement;

		var emailNodes = response.getElementsByTagName("newemail");


		var result = "";

		for(var i=0; i<emailNodes.length; i++)
		{
			result = result + "	<p style='float: right;'><em>" + emailNodes.item(i).firstChild.nodeValue + "</em></p>";
		}
		document.getElementById('resend_etickets_msg').innerHTML = result;
		document.getElementById('resend_etickets').style.display = 'none';
	}
}

function addNewAddress()
{

	if(document.forms["change_address"]["full_name"].value.length < 4 )
	{
		alert('Please enter full name of card holder.' );
		return false;
	}
	else if( document.forms["change_address"]["address"].value.length < 4)
	{
		alert('Please enter first line of address. ');
		return false;
	}
	else if( document.forms["change_address"]["address2"].value .length < 4)
	{
		alert('Please enter 2nd line of address. ');
		return false;
	}
	else if( document.forms["change_address"]["address3"].value .length < 4)
	{
		alert('Please enter 3rd line of address. ');
		return false;
	}
	else if( document.forms["change_address"]["postcode"].value .length < 3)
	{
		alert('Please enter postcode. ');
		return false;
	}
	else
	{


		if ( http.readyState == 0 || http.readyState == 4 )
		{

			var customer_id = document.forms["change_address"]["c_id"].value;
			var name = document.forms["change_address"]["full_name"].value;
			var address = document.forms["change_address"]["address"].value;
			var address2 = document.forms["change_address"]["address2"].value;
			var address3 = document.forms["change_address"]["address3"].value;
			var postcode = document.forms["change_address"]["postcode"].value;
			var httpOpen = "/xml/?action=update_customer_name_address&code=xkllpsoolw&customer_id=" + customer_id + "&name=" + name+ "&address=" + address+ "&address2=" + address2+ "&address3=" + address3 + "&postcode=" + postcode;

			httpOpen = httpOpen + "&dummy=" + new Date().getTime();
			http.open("GET", httpOpen, true);
			http.onreadystatechange = handleResponseAddNewAddress;
			http.send(null);
		}
		else
		{
			setTimeout('addNewAddress("' + customer_id + '", "' + name + '", "' + address + '", "' + address2 + '", "' + postcode + '")', 500);
		}

	}
	return false;
}


function handleResponseAddNewAddress() {
	if (http.readyState == 4) {
		var response = http.responseXML;
		if(!response || !response.documentElement){
		}

		document.getElementById('chngadd').style.backgroundColor = "";
		document.getElementById('chngadd').style.color = "";
		document.getElementById('chngadd').value = "Changed";

		//document.change_name_address.select_address.selectedIndex=1;

		document.getElementById('select_address').selectedIndex = 1;
		document.getElementById('address').style.display = 'block';
		document.getElementById('new_address').style.display = 'none';
		xmlRoot =  response.documentElement;

		var Message = response.getElementsByTagName("message");

		var Name = response.getElementsByTagName("name");
		var Address = response.getElementsByTagName("address");
		var Address3 = response.getElementsByTagName("address2");
		var Address2 = response.getElementsByTagName("address3");
		var Postcode = response.getElementsByTagName("postcode");


		var result = "";

		for(var i=0; i<Message.length; i++){
			$.facebox.close();
			alert(Message.item(i).firstChild.nodeValue);
		}

		for(var i=0; i<Name.length; i++){
			var	update_name=Name.item(i).firstChild.nodeValue;
		}
		for(var i=0; i<Address.length; i++){
			var	update_Address=Address.item(i).firstChild.nodeValue + "<br />" +Address2.item(i).firstChild.nodeValue + "<br />" +Address3.item(i).firstChild.nodeValue + "<br />" + Postcode.item(i).firstChild.nodeValue;
			var	update_short_Address=Address.item(i).firstChild.nodeValue  + " " + Postcode.item(i).firstChild.nodeValue;
		}

		document.getElementById('address').innerHTML = update_name+ "<br />" + update_Address;
		//document.getElementById('changename').innerHTML = update_name;
		document.getElementById('select_address').options[1].innerHTML =update_name + update_short_Address;


	}
}