	function ajaxFunction() {
		var xmlHttp;
		try
		{
			// Firefox, Opera 8.0+, Safari
			xmlHttp=new XMLHttpRequest();
		}
		catch (e)
		{
			// Internet Explorer
			try
			{
				xmlHttp=new ActiveXObject('Msxml2.XMLHTTP');
			}
			catch (e)
			{
				try
				{
					xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
				}
				catch (e)
				{
					alert('Your browser does not support AJAX!');
					return false;
				}
			}
		}
		return xmlHttp;
	}
	var xmlHttpPass;
	var tmTimeout_Firefox;
	function getCalendarHTML(nDaysDiff) { 
	//alert('getCalendarHTML');
		var xmlHttp = ajaxFunction();
			
		
			
		xmlHttp.open('GET','includes/writeCalendar.asp?d='+nDaysDiff,false);
		xmlHttp.send(null);
		xmlHttp.onreadystatechange = function() {
			//alert('Ready state change, new state='+xmlHttp.readyState);
				if(xmlHttp.readyState == 4) {
					//alert(xmlHttp.responsetext);
					//alert('got');
					var strArray=xmlHttp.responseText;
					//alert(strArray);
					//alert('got response! = '+strArray);
					document.getElementById('calendar').innerHTML = strArray;
					clearInterval(tmTimeout_Firefox);
				}
			}
		xmlHttpPass = xmlHttp;
		tmTimeout_Firefox = setInterval(checkResponseNow, 100);
		//alert('sent request');
	}
	
	function checkResponseNow()
	{
	//alert('checkResponseNow, xmlHttp.readyState='+xmlHttpPass.readyState);
		if(xmlHttpPass.readyState == 4) {
			//alert(xmlHttp.responsetext);
			//alert('got');
			var strArray=xmlHttpPass.responseText;
			//alert(strArray);
			//alert('got response! = '+strArray);
			document.getElementById('calendar').innerHTML = strArray;
			clearInterval(tmTimeout_Firefox);
		}
	}
	
	
	function setTimex(theTime, theElement)
	{
	
		
		document.getElementById('timeID').value = theTime;

		
		var arr = new Array(); 
		var theEl;
		theEl = document.getElementById('TheTimeSel');
		arr = theEl.getElementsByTagName('td');

		for(var i=0;i<arr.length;i++) {
			theElt = arr.item(i);
			if (theElt.className=='calDay selected') theElt.className = 'calDay';
		}
		theElement.className='calDay selected';

	}
	
	
	function setDay(theDay, theMonth, theYear, theElement)
	{
		var selectedDate = theDay+"/"+theMonth+"/"+theYear;
		document.getElementById('selDate').value = selectedDate;
		
		//reset allllll
		var arr = new Array(); 
		var theEl;
		theEl = document.getElementById('calendar');
		arr = theEl.getElementsByTagName('a');
		
		for(var i=0;i<arr.length;i++) {
			theElt = arr.item(i).parentNode;
			if (theElt.className=='calDay selected') theElt.className = 'calDay';
		}
		
		
		if (theElement.className=='calDay')
		{
			theElement.className = 'calDay selected';
		} else {
			theElement.parentNode.className = 'calDay selected';	
		}
	}
	
	function doValidation() {
		var validFields = true;
		var invalidText = "";
		//alert('1');
		var validateArray = new Array(
			Array('ContactNameID', 'Please enter a valid contact name', 4),
			Array('CompanyNameID', 'Please enter a unique name to display for your company', 1),
			Array('AddressLine2', 'Please enter your full address', 5),
			Array('emailID', 'Please enter a valid email address', 5),
			Array('TelephoneID', 'Please enter your real telephone number', 6),
			Array('selDate', 'Please choose your preferred date', 2),
			Array('timeID', 'Please choose your preferred time', 2)
		);
		//alert('2');
		for (var lp=0;lp<validateArray.length;lp++)
		{
			var thisValidEl = document.getElementById(validateArray[lp][0]);
			if (thisValidEl.value==''||(validateArray[lp][0]=='emailID'&&!echeck(thisValidEl.value)))
			{
				if (validateArray[lp][0]=='selDate') document.getElementById('theCalTable').style.borderColor='#FFFFCC';
				if (validateArray[lp][0]=='timeID') document.getElementById('theTimeTable').style.borderColor='#FFFFCC';
				

				invalidText += "<li>"+validateArray[lp][1]+"</li>"; 
				thisValidEl.className = 'text error';
				if (validateArray[lp][0]!='selDate') document.getElementById(validateArray[lp][0]+'_invalid').style.display='block';
				validFields = false;
			}
			else
			{
				var testLenStr = thisValidEl.value+"";
				if (testLenStr.length<validateArray[lp][2])
				{
					invalidText += "<li>"+validateArray[lp][1]+"</li>"; 
					thisValidEl.className = 'text error';
					if (validateArray[lp][0]!='selDate') document.getElementById(validateArray[lp][0]+'_invalid').style.display='block';
					validFields = false;
					if (validateArray[lp][0]=='selDate') document.getElementById('theCalTable').style.borderColor='#FFFFCC';
					if (validateArray[lp][0]=='timeID') document.getElementById('theTimeTable').style.borderColor='#FFFFCC';
				} 
				else
				{
					thisValidEl.className = 'text';
					if (validateArray[lp][0]!='selDate')  document.getElementById(validateArray[lp][0]+'_invalid').style.display='none';
					if (validateArray[lp][0]=='selDate') document.getElementById('theCalTable').style.borderColor='#FFFFFF';
					if (validateArray[lp][0]=='timeID') document.getElementById('theTimeTable').style.borderColor='#FFFFFF';
				}
			}
		}
		//alert('3');
		var invalidCompanyChars = "\\/:*!?\"<>|'"
		var loopy = invalidCompanyChars.split("");
		for (var lp=0;lp<loopy.length;lp++)
		{
			var testStr = document.getElementById('CompanyNameID').value+"";
			if (testStr.indexOf(loopy[lp]) > 0)
			{
				invalidText += "<li>Your company reference cannot contain the following characters <b>"+invalidCompanyChars+"</b></li>"; 
				validFields = false;
				break;
			}
		}
		var theEmail = document.getElementById('emailID').value+"";
		var repEmail = document.getElementById('repemailID').value+"";
		if (theEmail!=repEmail)
		{
			invalidText += "<li>Email and repeated email do not match.</li>"; 
			validFields = false;
		}
			
			
		var whereHear = document.getElementById('WhereHear');
		var ad_whereHear = document.getElementById('WhereHear_AdvertSubOptions');
		var pub_whereHear = document.getElementById('WhereHear_PublicationSubOptions');
		var net_whereHear = document.getElementById('WhereHear_NetworkSubOptions');
		var other_whereHear = document.getElementById('WhereHear_Other');
		
		if (whereHear.value=="-"||(whereHear.value=='Other'&&other_whereHear.value==''))
		{
			validFields = false;
			invalidText += "<li>Please select where you heard about us</li>"; 
			document.getElementById('WhereHear_invalid').style.display='block';
		}
		else
		{
			document.getElementById('WhereHear_invalid').style.display='none';
			switch (whereHear.value)
			{
				case "Advert":
					if (ad_whereHear.value=="-"||(ad_whereHear.value=='Other'&&other_whereHear.value==''))
					{
						validFields = false;
						invalidText += "<li>Please select the advert where you heard about us</li>"; 
						document.getElementById('WhereHear_AdvertSubOptions_invalid').style.display='block';
					}
					else
					{
						document.getElementById('WhereHear_AdvertSubOptions_invalid').style.display='none';
					}
				break;
				case "Article":
					if (pub_whereHear.value=="-"||(pub_whereHear.value=='Other'&&other_whereHear.value==''))
					{
						validFields = false;
						invalidText += "<li>Please select the publication where you heard about us</li>"; 
						document.getElementById('WhereHear_PublicationSubOptions_invalid').style.display='block';
					}
					else
					{
						document.getElementById('WhereHear_PublicationSubOptions_invalid').style.display='none';
					}
				break;
				case "Network":
					if (net_whereHear.value=="-"||(net_whereHear.value=='Other'&&other_whereHear.value==''))
					{
						validFields = false;
						invalidText += "<li>Please select the network where you heard about us</li>"; 
						document.getElementById('WhereHear_NetworkSubOptions_invalid').style.display='block';
					}
					else
					{
						document.getElementById('WhereHear_NetworkSubOptions_invalid').style.display='none';
					}
				break;
			}
		}
		
			

		//alert('4');
		
		//return false;

		//if (!echeck(document.getElementById('emailID').value))
		//{
			//invalidText += "<li>Please enter a valid email address</li>"; 
			//validFields = false;
		//}

		

		
		
		if (!validFields) {
			var errBox = document.getElementById('InvalidBox');
			errBox.innerHTML = '<h2>Please correct the following before continuing...</h2><ul>'+invalidText+'</ul><span class="divide">&nbsp;</span>';
			errBox.style.display='block';
			new Effect.Highlight(errBox, { startcolor: '#FFFF00', endcolor: '#ffff99' }); 
		}
		//alert('5');
		return validFields;
	}
	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){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}
	
	
	function repAmp(fld)
	{
		var curValue = fld.value+"";
		curValue = curValue.replace(/&/g, "and");
		fld.value = curValue;
	}
	function doDebug(txt)
	{
		document.getElementById('debugInfo').innerHTML += "<br />"+txt;
	}
	function keyPressFld()
	{
		//doDebug('test keyPress');
	}
	function keyPressFld(evt) {
		evt = (evt) ? evt : ((event) ? event : null);
		var evver = (evt.target) ? evt.target : ((evt.srcElement)
		?evt.srcElement : null );
		var keynumber = evt.keyCode;
		if(keynumber){
			if (keynumber==86&&evt.ctrlKey)
			{
				//trying to paste..
				return false;
			}
		}
	}

