/**
 *
 *	AJAX Object and Functions
 * 	-------------------------
 * 	Creating of AJAX object, sending AJAX requests and handling the response - requires "includes/ajax/xxx.php"
 *
 **/
 
	
	// For looping requests, time between loop
	var timeInt = 2500;

	// Sending methods - POST/GET
	var sendMethod = 'POST';




	// Creation of the XMLHttpRequest object
	function initHTTP(){
	
		// Blank variable
		var http = false;
		
		// Mozilla, Safari, etc.
		if (window.XMLHttpRequest) {
		
			http = new XMLHttpRequest();
		
		// Internet Explorer
		} else if (window.ActiveXObject) {
			try {
				// Internet Explorer 7+
				http = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					// Internet Explorer 5+
					http = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {
					
				}
			}
		}
		
		// Can't create object! Old browser...
		if (!http) {
			alert('Your web browser is not compatible');
			return false;
		}
		
		// Return AJAX object
		return http; 
		
	}
	
	
	
	
	// Handling of AJAX response 	
	function handleResponse(reqObj, divtag, fetchloop, params, fetchscriptpath) {
		
		// Debugging
		//alert(reqObj.readyState + "\n" + reqObj.status);
		
		// AJAX ready state:
		//
		//		0 = Uninitialized
		// 	 	1 = Loading
		//		2 = Finished loading
		//		3 = Almost ready for use
		//		4 = Loaded

		if(reqObj.readyState == 4){
		
			// Page request status
			//
			//		200 = OK
			//		403 = Forbidden
			//		404 = Page Not Found
			//		500	= Internal Server Error

			if(reqObj.status == 200 && divtag != '') {
				
				if(divtag == 'captcha') {
					
					if(reqObj.responseText == 'tick.png' || reqObj.responseText == 'cross.png') {
						document.getElementById('captcha-hidden').value = 0;
						if(navigator.appName == 'Microsoft Internet Explorer') {
							if(reqObj.responseText == 'tick.png') {
								document.getElementById('callback-captcha').className = 'callback-input-small tick-small';
							} else if(reqObj.responseText == 'cross.png') {
								document.getElementById('callback-captcha').className = ' callback-input-small cross-small';
							}
						} else {
							document.getElementById('callback-captcha').style.backgroundImage = 'url(graphics/'+reqObj.responseText+');';
							document.getElementById('callback-captcha').style.backgroundRepeat = 'no-repeat';
							document.getElementById('callback-captcha').style.backgroundPosition = 'right';
						}
						
						if(reqObj.responseText == 'tick.png') {
							document.getElementById('captcha-hidden').value = 1;
						}

					}
					
				} else if(divtag == 'contactCaptcha') {
					
					if(reqObj.responseText == 'tick.png' || reqObj.responseText == 'cross.png') {
						document.getElementById('contact-captcha-hidden').value = 0;
						
							if(navigator.appName == 'Microsoft Internet Explorer') {
							if(reqObj.responseText == 'tick.png') {
								document.getElementById('captcha').className = 'txt small tick-small';
							} else if(reqObj.responseText == 'cross.png') {
								document.getElementById('captcha').className = 'txt small cross-small';
							}
						} else {
							document.getElementById('captcha').style.backgroundImage = 'url(graphics/'+reqObj.responseText+');';
							document.getElementById('captcha').style.backgroundRepeat = 'no-repeat';
							document.getElementById('captcha').style.backgroundPosition = 'right';
						}
						
						if(reqObj.responseText == 'tick.png') {
							document.getElementById('contact-captcha-hidden').value = 1;
						}
					}
				
				} else if(divtag == 'ajaxMessage' && navigator.appName == 'Microsoft Internet Explorer' && parseFloat(navigator.appVersion) <= 6.0) {

					parent.document.getElementById('callbackiframe').style.height = '320px';
					if(reqObj.responseText.match('Thank you')) {
						document.getElementById('callback-name').value = '';
						document.getElementById('callback-phone').value = '';
						document.getElementById('callback-captcha').value = '';
					}
					document.getElementById(divtag).innerHTML = reqObj.responseText;
					
				}  else if(divtag == 'enquiryMessage') {
					
					if(reqObj.responseText.match('Thank you')) {
						document.getElementById('name').value = '';
						document.getElementById('email').value = '';
						document.getElementById('phonenum').value = '';
						document.getElementById('captcha').value = '';
						document.getElementById('content').value = '';
						document.getElementById('subject').selectedIndex = 0;
					}
					document.getElementById(divtag).innerHTML = reqObj.responseText;
					
				} else {

					if(reqObj.responseText.match('Thank you')) {
						document.getElementById('callback-name').value = '';
						document.getElementById('callback-phone').value = '';
						document.getElementById('callback-captcha').value = '';
					}
					document.getElementById(divtag).innerHTML = reqObj.responseText;
				}
				
			}
			
			// If request is a loop, repeat the same request in the time interval
			if(fetchloop == true) {
				setTimeout("sendRequest('"+params+"', '"+divtag+"', true, '"+fetchscriptpath+"')", timeInt);
			}
						
		}
		
	}
		
	// Send AJAX Request function
	function sendRequest(parameters, divtag, loop, scriptpath, loadtag) {
		
		// If display loading...
		if(document.getElementById(loadtag)) {
			document.getElementById(loadtag).innerHTML = '<img src="graphics/icons/load.gif" alt="" border="0" /> <span style="color:#999999">Loading...</span>';
		}
		
		// Initialise the AJAX object
		var ajax = initHTTP(); 
		
		// If making a loop request
		if(loop == true) {
	
			// When ready call the handleResponse function (and loop request)
			ajax.onreadystatechange = function() { 
				handleResponse(ajax, divtag, true, parameters, scriptpath); 
			}
			
		} else {
			
			// When ready call the handleResponse function
			ajax.onreadystatechange = function() { 
				handleResponse(ajax, divtag, false, parameters, scriptpath); 
			}
		
		}
		
		
		// If sending via POST
		if(sendMethod == 'POST') {
			
			// Open the connection to the server side script
			ajax.open(sendMethod, scriptpath, true);
			
			// HTTP Headers
			ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			ajax.setRequestHeader("Content-length", parameters.length);
			ajax.setRequestHeader("Connection", "Keep-Alive"); 
			
			// Send request parameters to the server side script
			ajax.send(parameters+"&ts="+(new Date().getTime()));
			
		} 
		
		// If sending via GET
		if(sendMethod == 'GET') {
			
			// Open the connection to the server side script
			ajax.open(sendMethod, scriptpath+"?"+parameters+"&ts="+(new Date().getTime()), true);
			
			// HTTP Headers
			ajax.setRequestHeader("Content-length", parameters.length);
			ajax.setRequestHeader("Connection", "Keep-Alive"); 
			
			// Send nothing as information is passed through URL above
			ajax.send(null);
			
		} 
	
	}
