var xmlhttp=false;
/*@cc_on @*/
	/*@if (@_jscript_version >= 5)
	// JScript gives us Conditional compilation, we can cope with old IE versions.
	// and security blocked creation of the objects.
	 try {
	  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	 } catch (e) {
	  try {
	   xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
	  } catch (E) {
	   xmlhttp = false;
	  }
	 }
	@end @*/

if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	  xmlhttp = new XMLHttpRequest();
	}

    
    function validateFormOrder() {
               
		enableShippingAddressFields(document.formOrderDetails);
              
		//check form data
		reEmail = /^.+@[^\.].*\.[a-z]{2,}$/i;
		if (document.formOrderDetails['firstName'].value == '') {
			alert('First Name field is required');
			document.formOrderDetails['firstName'].focus();
			return false;
		} else if (document.formOrderDetails['lastName'].value == '') {
			alert('Last Name field is required');
			document.formOrderDetails['lastName'].focus();
			return false;
		} else if (document.formOrderDetails['phone'].value == '') {
			alert('Phone field is required');
			document.formOrderDetails['phone'].focus();
			return false;
		} else if (document.formOrderDetails['email'].value == '') {
			alert('The e-mail address is required');
			document.formOrderDetails['email'].focus();
			return false;
		} else if ( reEmail.test(document.formOrderDetails['email'].value) == false) {
			alert('The e-mail address you specified is invalid');
			document.formOrderDetails['email'].focus();
			return false;
		} else if (document.formOrderDetails['address1'].value == '') {
			alert('Address 1 field is required');
			document.formOrderDetails['address1'].focus();
			return false;
		} else if (document.formOrderDetails['stateCountryCode'].value == 'AU' &&
			document.formOrderDetails['destination_postcode'].value == '') {
			alert('Postcode field is required');
			document.formOrderDetails['destination_postcode'].focus();
			return false;
		} else if (document.formOrderDetails['shippingAddress1'].value == '') {
			alert('Shipping Address 1 field is required');
			document.formOrderDetails['shippingAddress1'].focus();
			return false;
		} else if (document.formOrderDetails['shippingStateCountryCode'].value == 'AU' &&
			document.formOrderDetails['shippingDestination_postcode'].value == '') {
			alert('Shipping Postcode field is required');
			document.formOrderDetails['shippingDestination_postcode'].focus();
			return false;
		}
		

		
		
		//check illegal charaters
		for (i=0; i < document.formOrderDetails.elements.length; i++) {
			 if (containInvalidChars(document.formOrderDetails[i].value)) {
			 	alert('Form field contains invalid charater ie: & etc.');
			 	document.formOrderDetails[i].focus();
			 	return false;
			 }
		}

		return true;
	}
        function enableShippingAddressFields(form) {
		//looping around the form and disable all fields with shipping prefix
		//document.formOrderDetails.shippingFields.disabled=true;
		if (form.shippingAddressSame.checked) {
			form.shippingAddress1.value = form.address1.value;
			form.shippingAddress2.value = form.address2.value;
			form.shippingSuburb.value = form.suburb.value;
			form.shippingDestination_postcode.value = form.destination_postcode.value;
			form.shippingCity.value = form.city.value;
			if ( form.shippingStateCountryCode.value == form.stateCountryCode.value ) {
				form.shippingStateCountryCode.value = form.stateCountryCode.value;
				form.shippingState.value = form.state.value;
			} else {
				form.shippingStateCountryCode.value = form.stateCountryCode.value;
				//------------------------------------------
				//the state code change has to wait till fetch completed
				countryCode = document.formOrderDetails['shippingStateCountryCode'].value;
				currentRegion = document.formOrderDetails['shippingState'].value;
						
				 url = BASE_URL+"regions/getStates/"+countryCode;
				
				//alert(url);
				
				elem = document.getElementById('shippingStateSelect');		
				elem.innerHTML = "Refreshing ... ";	
				
				xmlhttp.open("GET", url, true);
				xmlhttp.onreadystatechange = function() {
					if (xmlhttp.readyState == 4) {
						elem.innerHTML = xmlhttp.responseText;	
						form.shippingState.value = form.state.value;	
						form.shippingState.disabled = true;						
					}
				};
				xmlhttp.send(null);
				//------------------------------------------
			}
			form.shippingAddress1.disabled = true;
			form.shippingAddress2.disabled = true;
			form.shippingSuburb.disabled = true;
			form.shippingDestination_postcode.disabled = true;
			form.shippingCity.disabled = true;
			form.shippingStateCountryCode.disabled = true;
			form.shippingState.disabled = true;
		} else {
			form.shippingAddress1.disabled = false;
			form.shippingAddress2.disabled = false;
			form.shippingSuburb.disabled = false;
			form.shippingDestination_postcode.disabled = false;
			form.shippingCity.disabled = false;
			form.shippingStateCountryCode.disabled = false;
			form.shippingState.disabled = false;
		}
	}

function fetchBillingStateData() {		
		
		countryCode = document.formOrderDetails['stateCountryCode'].value;
		currentRegion = document.formOrderDetails['state'].value;
				
		 url = BASE_URL+"regions/getStates/"+countryCode;
		
		//alert(url);
		
		elem = document.getElementById('stateSelect');		
		elem.innerHTML = "Refreshing ... ";	
		
		xmlhttp.open("GET", url, true);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4) {
				elem.innerHTML = xmlhttp.responseText;								
				enableShippingAddressFields(document.formOrderDetails);
			}
		};
		xmlhttp.send(null);
	}
	
	function fetchShippingStateData() {		
		
		countryCode = document.formOrderDetails['shippingStateCountryCode'].value;
		currentRegion = document.formOrderDetails['shippingState'].value;
				
		 url = BASE_URL+"regions/getStates/"+countryCode;
		
		//alert(url);
		
		elem = document.getElementById('shippingStateSelect');		
		elem.innerHTML = "Refreshing ... ";	
		
		xmlhttp.open("GET", url, true);
		xmlhttp.onreadystatechange = function() {
			if (xmlhttp.readyState == 4) {
				elem.innerHTML = xmlhttp.responseText;								
			}
		};
		xmlhttp.send(null);
	}
        
        
	function containInvalidChars (str) {
		//check for ampersand 
		if ( str.indexOf('&') >= 0 )
			return true
		return false;
	}
	
	

