/********************************************************************************************************************

	AJAX Functions
	
********************************************************************************************************************/

var handle;

function createRequestObject(){

	/* The following function creates an XMLHttpRequest object... */

	var request_o; //declare the variable to hold the object.
	var browser = navigator.appName; //find the browser name
	
	if(browser == "Microsoft Internet Explorer"){
		/* Create the object using MSIE's method */
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		/* Create the object using other browser's method */
		request_o = new XMLHttpRequest();
	}
	return request_o; //return the object
};

/* The variable http will hold our new XMLHttpRequest object. */
var http = createRequestObject(); 

function updateBasket(url, handle_what){
	
	handle = handle_what;
	
	/* Function called to get the product categories list */

	http.open('get', url);

	/* Define a function to call once a response has been received. This will be our handleProductCategories function that we define below. */
	http.onreadystatechange = handleProducts; 

	/* Send the data. We use something other than null when we are sending using the POST method. */
	http.send(null);
};

function handleProducts(){

	/* Function called to handle the list that was returned from the internal_request.php file.. */

	/* Make sure that the transaction has finished. The XMLHttpRequest object 
		has a property called readyState with several states:
		0: Uninitialized
		1: Loading
		2: Loaded
		3: Interactive
		4: Finished */
		
	if(http.readyState == 4){ //Finished loading the response

		/* Get the XML Response and assign the variables */
	
		switch(handle) {
		
			case "info":
				var XMLresponse = http.responseXML;
				var id = XMLresponse.getElementsByTagName('id')[0].firstChild.data;
				var info = XMLresponse.getElementsByTagName('description')[0].firstChild.data;
				var date = XMLresponse.getElementsByTagName('date')[0].firstChild.data;
				var title = XMLresponse.getElementsByTagName('title')[0].firstChild.data;
				var viewed = XMLresponse.getElementsByTagName('viewed')[0].firstChild.data;

				/* Set the different Elements */
				document.getElementById('video_title').innerHTML = title;
				
				document.getElementById('now_playing').value = id;
				
				if(viewed == 0)
					document.getElementById('video_info').innerHTML = info + '<div id="update_buttons"><a href="javascript:getInfo(\'scripts/recording_viewed.php?id=' + id + '&viewed=1\', \'viewed\');">viewed</a></div>';
				else
					document.getElementById('video_info').innerHTML = info + '<div id="update_buttons"><a href="javascript:getInfo(\'scripts/recording_viewed.php?id=' + id + '&viewed=0\', \'viewed\');">unviewed</a></div>';
				break;
			case "folders":
				var html = http.responseText;
				document.getElementById('recorded_programmes').innerHTML = html;
				break;
			case "imdb_lookup":
				var XMLresponse = http.responseXML;
				var title = XMLresponse.getElementsByTagName('title')[0].firstChild.data;
				var rank  = XMLresponse.getElementsByTagName('rank')[0].firstChild.data;;
				var plots = XMLresponse.getElementsByTagName('plot')[0].firstChild.data;
				
				document.getElementById('imdb_loading').innerHTML = "&nbsp;";
				document.getElementById('title').value = title;
				document.getElementById('rank').value = rank;
				document.getElementById('plots').value = plots;
				
				break;
			case "get_address":
				var XMLresponse = http.responseXML;
				var id = XMLresponse.getElementsByTagName('id')[0].firstChild.data;
				var ref = XMLresponse.getElementsByTagName('ref')[0].firstChild.data;
				var add1 = XMLresponse.getElementsByTagName('add1')[0].firstChild.data;
				var add2 = XMLresponse.getElementsByTagName('add2')[0].firstChild.data;
				var add3 = XMLresponse.getElementsByTagName('add3')[0].firstChild.data;
				var add4 = XMLresponse.getElementsByTagName('add4')[0].firstChild.data;
				var postcode = XMLresponse.getElementsByTagName('postcode')[0].firstChild.data;
				if(add1 == 'NA') add1 = '';
				if(add2 == 'NA') add2 = '';
				if(add3 == 'NA') add3 = '';
				if(add4 == 'NA') add4 = '';
				document.getElementById('id').value = id;
				document.getElementById('ref').value = ref;
				document.getElementById('add1').value = add1;
				document.getElementById('add2').value = add2;
				document.getElementById('add3').value = add3;
				document.getElementById('add4').value = add4;
				document.getElementById('postcode').value = postcode;
				break;
			case "basket_summary":
				var XMLresponse = http.responseXML;
				var items = XMLresponse.getElementsByTagName('items')[0].firstChild.data;
				var total = XMLresponse.getElementsByTagName('total')[0].firstChild.data;
				document.getElementById('basket_summary').innerHTML = items + " items/&pound;" + total;
				break;
			case "add":
				updateNavBasket();
				break;
			case "part_info":	
				var XMLresponse = http.responseXML;
				var partNo = XMLresponse.getElementsByTagName('partNo')[0].firstChild.data;
				var desc = XMLresponse.getElementsByTagName('desc')[0].firstChild.data;
				var make = XMLresponse.getElementsByTagName('make')[0].firstChild.data;
				var year = XMLresponse.getElementsByTagName('year')[0].firstChild.data;
				var method = XMLresponse.getElementsByTagName('method')[0].firstChild.data;
				var price = XMLresponse.getElementsByTagName('price')[0].firstChild.data;
				
				document.getElementById('desc').value = desc;				
				document.getElementById('make').value = make;				
				document.getElementById('year').value = year;				
				document.getElementById('method').value = method;				
				document.getElementById('price').value = price;	
				document.getElementById('save_type').value = partNo;
					
				document.getElementById('submit').disabled=false;
				
				break;
			case "part_block":
				var html = http.responseText;
				document.getElementById('part_block').innerHTML = html;
				break;
			case "part_info":
			default:
				break;
		
		}
	} else {
		switch(handle) {
		
			case "info":
				document.getElementById('video_title').innerHTML = '<span style="text-decoration: italic; font-size: 150%; font-weight: 900; color: #CC0000">Loading...</style>'
				document.getElementById('video_info').innerHTML = '&nbsp;';
				break;
			case "folders":
				document.getElementById('recorded_programmes').innerHTML = "Please Wait...";
				break;
			case "imdb_lookup":
				document.getElementById('imdb_loading').innerHTML = "Querying IMDB...";
				
				break;
			case "basket_summary":
				document.getElementById('basket_summary').innerHTML = "updateing...";
				break;
			case "part_block":
				document.getElementById('part_block').style.display = 'block';
				document.getElementById('part_block').innerHTML = "Loading Parts...";
				break;
			default:
				break;
				
		}
	}
	
	updateFooter();
	
};
