var practice={
	businessID:'',
	professionID:'',
	saleTypeID:'',
	info:['business','basic','detailed','complete'],
	curDir:location.href.substring(0,location.href.search(/\/(\w)+\.php/)),

	/*	Add a new business information
	 */
	add:function(infotype){
		var frmvalues = practice.getFormValues(practice.info[infotype]+'infoform');
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=add&infotype='+practice.info[infotype]+'&'+frmvalues);
		http.onreadystatechange=function(){
			if(http.readyState==1){
				popup.create(150,90);
				popup.printContent('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Saving Information...<\/td><\/tr><\/table>');
			}
			if(http.readyState==4){
				popup.close();
				alert('Information Saved:\nPlease proceed to entering Basic Information.');
				practice.businessID=http.responseText;
				practice.showAddedInfo(infotype);
				practice.addExtraInfo(infotype+1,practice.businessID);
			}
		}
		http.send(null);
	},

	/*	Edit forms for adding extra information for a business
	 */
	addExtraInfo:function(infotype,businessID){
		if(infotype<practice.info.length){
			var http1=createRequestObject();
			http1.open('get','/myaccount/practice.php?action=showform&businessID='+businessID+'&infotype='+infotype);
			http1.onreadystatechange=function(){
				if(http1.readyState==4){
					document.getElementById(practice.info[infotype]+'info').innerHTML=http1.responseText;

					if(document.getElementById(practice.info[infotype]+'infobtn')) {
						var btn=document.getElementById(practice.info[infotype]+'infobtn');
						btn.onclick=function(){practice.updateFieldsInfo(infotype,businessID)};
					} else {
						practice.addExtraInfo(infotype+1,businessID);
					}
				}
			}
			http1.send(null);
		}else{
			var btn=document.getElementById('donebtn');
			btn.onclick=function(){ getData('practice','view:'+businessID); }
			btn.style.display='block';
		}
	},

	updateFieldsInfo:function(infotype,businessID){
		var frmvalues = practice.getFormValues(practice.info[infotype]+'infoform');
		if(frmvalues!='') frmvalues = '&'+frmvalues;
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=add&businessID='+businessID+'&infotype='+practice.info[infotype]+frmvalues);
		http.onreadystatechange=function(){
			if(http.readyState==1){
					popup.create(150,90);
					popup.printContent('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Saving Information...<\/td><\/tr><\/table>');
			}
			if(http.readyState==4){
				popup.close();
				practice.showAddedInfo(infotype);

				var msg = 'Information Saved:\n';

				if((infotype+1)<practice.info.length){
					msg+='Please proceed to entering '+practice.info[infotype+1]+' Information.';
				} else {
					msg+='Click DONE to view information for this business';
				}
				practice.addExtraInfo(infotype+1,businessID);
				alert(msg);
			}
		}
		http.send(null);
	},

	/*	Display added information on Add Form
	 */
	showAddedInfo:function(infotype){
		var otable=document.getElementById(practice.info[infotype]+'infoTBL');
		for(var i=0;i<otable.rows.length;i++){
			if(otable.rows[i].cells[1] && otable.rows[i].cells[1].getAttribute('id'))
			{
				var ocell=otable.rows[i].cells[1];
				var el=ocell.firstChild;
				var val='';
				if(el.type=='text' || el.type=='textarea'){
					val=el.value;
				}
				if(el.nodeName=='SELECT'){
					val=el.options[el.selectedIndex].firstChild.nodeValue;
					if(val.indexOf('Please select')!=-1){
						val='';
					}
				}
				ocell.innerHTML = val;
			}
		}
		if(infotype==0 && document.getElementById('contactcardTBL')){
			otable=document.getElementById('contactcardTBL');
			for(var i=0;i<otable.rows.length;i++){
				if(otable.rows[i].cells[1] && otable.rows[i].cells[1].getAttribute('id'))
				{
					var ocell=otable.rows[i].cells[1];
					var el=ocell.firstChild;
					var val='';
					if(el.type=='text' || el.type=='textarea'){
						val=el.value;
					}
					ocell.innerHTML = val;
				}
			}
		}
		var btn=document.getElementById(practice.info[infotype]+'infobtn');
		btn.style.display='none';
		btn=document.getElementById('contactbtn');
		btn.style.display='none';
	},

	/*	Update an existing practice information and display updated information
	 *		itemID = table ID
	 */
	update:function(itemID,businessID){
		var infotype = itemID.substring(0,itemID.indexOf('info'));
		var http=createRequestObject();
		var submit=false;
		switch(infotype){
			case('contact'):
				submit = practice.validateEditContact();
				break;
			case('business'):
				submit = practice.validateEditPractice();
				break;
			default:
				submit = true;
		}
		if(submit){
			// update info
			var frmvalues = practice.getFormValues(itemID+'form');
			http.open('get','/myaccount/practice.php?action=update&infotype='+infotype+'&businessID='+businessID+'&'+frmvalues);
			http.onreadystatechange=function(){
				if(http.readyState==1){
					popup.create(150,90);
					popup.printContent('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Saving Information...<\/td><\/tr><\/table>');
				}
				if(http.readyState==4) {
					popup.close();
					alert('Information Saved');
					// display updated info
					http.open('get','/myaccount/practice.php?action=printinfo&infotype='+infotype+'&businessID='+businessID);
					http.onreadystatechange=function(){
						http.readyState==4?document.getElementById(infotype+'info').innerHTML=http.responseText:'';
					}
					http.send(null);
				}
			}
			http.send(null);
		}
	},

	/*	Dynamically generate form for editing practice information
	 *		itemID = ID of div containing table
	 */
	edit:function(itemID,businessID){
		if(itemID=='businessinfo'){
			var http=createRequestObject();
			http.open('get','/myaccount/practice.php?action=showform&businessID='+businessID+'&infotype=business');
			http.onreadystatechange=function(){
				http.readyState==4?document.getElementById('businessinfo').innerHTML=http.responseText:'';
			}
			http.send(null);
		} else {
			var otable=document.getElementById(itemID+'TBL');
			for(var i=0;i<otable.rows.length;i++){
				if((otable.rows[i].cells[1] && otable.rows[i].cells[1].getAttribute('id')) || (otable.rows[i].cells[0] && otable.rows[i].cells[0].getAttribute('id')))
				{
					var ocell;
					if(otable.rows[i].cells[0].getAttribute('id'))
						ocell = otable.rows[i].cells[0];
					else
						ocell = otable.rows[i].cells[1];

					var curid=ocell.getAttribute('id');
					var added=false;
					if(curid=='profession'){
						practice.professionID = ocell.className;
						var http4=createRequestObject();
						http4.open("get","/myaccount/practice.php?item=professionselect&professionID="+practice.professionID+"&onchange=true");
						http4.onreadystatechange=function(){
							http4.readyState==4?document.getElementById('profession').innerHTML=http4.responseText:'';
						}
						http4.send(null);
						added=true;
					}
					if(curid=='saletype'){
						var saleTypeID = ocell.className;
						var http3=createRequestObject();
						http3.open('get','/myaccount/practice.php?item=saletype&saleTypeID='+saleTypeID+'&professionID='+practice.professionID);
						http3.onreadystatechange=function(){
							http3.readyState==4?document.getElementById('saletype').innerHTML=http3.responseText:'';
						}
						http3.send(null);
						added=true;
					}
					if(curid=='state'){
						var state = ocell.innerHTML;
						var http2=createRequestObject();
						http2.open('get','/myaccount/practice.php?item=stateselect&state='+state+'&onchange=true');
						http2.onreadystatechange=function(){
							http2.readyState==4?document.getElementById('state').innerHTML=http2.responseText:'';
						}
						http2.send(null);
						added=true;
					}
					if(curid=='region'){
						var state = document.getElementById('states').options[document.getElementById('states').selectedIndex].value;
						var region = ocell.className;
						var http1=createRequestObject();
						http1.open('get','/myaccount/practice.php?item=region&regionID='+region+'&state='+state);
						http1.onreadystatechange=function(){
							http1.readyState==4?document.getElementById('region').innerHTML=http1.responseText:'';
						}
						http1.send(null);
						added=true;
					}
					if(curid=='price'){
						var price = ocell.innerHTML;
						price=price.replace("$","");
						price=price.replace(/,/g,"");
						price=Number(price);
						if(isNaN(price))
							price='';
						ocell.innerHTML=price;
					}
					if(curid=='itemcell'){
						var days = ocell.className;
						var http0=createRequestObject();
						http0.open('get','/myaccount/practice.php?item=itemselect&itemID='+days);
						http0.onreadystatechange=function(){
							http0.readyState==4?document.getElementById('itemcell').innerHTML=http0.responseText:'';
						}
						http0.send(null);
						added=true;
					}
					if(curid=='abstract'){
						var abstract = ocell.innerHTML;
						ocell.innerHTML='<textarea id="input_'+curid+'" name="input_'+curid+'" rows="10" cols="50">'+abstract.replace(/\<br\>/g,"\n")+'</textarea>';
						added=true;
					}
					if(curid=='description'){
						var description = ocell.innerHTML;
						ocell.innerHTML='<textarea id="input_'+curid+'" name="input_'+curid+'" rows="10" cols="50">'+description.replace(/\<br\>/g,"\n")+'</textarea>';
						added=true;
					}
					if(curid.indexOf('_')!=-1){
						added=true;
						var input_type = curid.substring(0,curid.indexOf('_'));
						switch(input_type)
						{
							case('Dropdown'):
								ocell.innerHTML='<select><option></option>';
								break;
							case('Big Note'):
								ocell.innerHTML='<textarea cols="50" rows="10"></textarea>';
								break;
							default:
								added=false;
								break;
						}
					}
					if(!added){
						var curtext=ocell.innerHTML;
						ocell.innerHTML='<input id="input_'+curid+'" name="input_'+curid+'" type="text" value="'+curtext+'" />';
					}
				}
			}
			var container = otable.parentNode;
			var cbody = container.innerHTML;
			container.innerHTML='';

			var newfrm = document.createElement('form');
			newfrm.id = itemID+'form';
			newfrm.innerHTML = cbody;
			container.appendChild(newfrm);

			var btn=document.getElementById(itemID+'btn');
			btn.value='Save Information';
			btn.onclick=function(){practice.update(itemID,businessID)};
		}
	},

	/*	Display form for editing extra information
	 */
	editFields:function(infotype,businessID){
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=showform&businessID='+businessID+'&infotype='+infotype);
		http.onreadystatechange=function(){
			http.readyState==4?document.getElementById(practice.info[infotype]+'info').innerHTML=http.responseText:'';
		}
		http.send(null);
	},

	/*	Update related dropdown list with corresponding options
	 *		selectobj = original dropdown list object
	 *		selectID = id of cell to contain the updated dropdown list
	 */
	updateSelects:function(selectobj,selectID){
		var param = selectobj.options[selectobj.selectedIndex].value;
		var http=createRequestObject();

		if(selectID=='saletype')
		{
			http.open('get','/myaccount/practice.php?item=saletype&professionID='+param);
		}
		else if(selectID=='acquisitionsearch')
		{
			http.open('get','/myaccount/practice.php?item=saletype&professionID='+param+'&onchange=true');
		}
		else if( selectID=='advacquisitionsearch')
		{
			http.open('get','/myaccount/practice.php?item=saletype&professionID='+param+'&onchange=true&name=advsalestypes');

		}
		else if(selectID=='region')
		{
			http.open('get','/myaccount/practice.php?item=region&state='+param);
		}
		else
		{
			return;
		}
		http.onreadystatechange=function(){
			if(http.readyState==4){
				document.getElementById(selectID).innerHTML=http.responseText;
				if(selectID.indexOf('adv')!= -1)
					practice.extendedSearchOptions();
			}
		}
		http.send(null);
	},
	sortresults:function(page,curoptions,cursort,cursorttype){
		var sortby=document.getElementById('practicesort').options[document.getElementById('practicesort').selectedIndex].value;
		if(cursort==0){
			window.location=page+'?'+curoptions+'&sort='+sortby+'&sorttype=asc';
		}else{
			if(cursort==sortby){
				cursorttype=='asc'?cursorttype='desc':cursorttype='asc';
			}else{
				cursorttype='asc';
			}
			window.location=page+'?'+curoptions+'&sort='+sortby+'&sorttype='+cursorttype;
		}
	},
	/* Save a Practice Listing
	 */
	save:function(businessID,userID){
		var http=createRequestObject();
		http.open('get','/practice/view.php?action=save&id='+businessID+'&userID='+userID);
		http.onreadystatechange=function(){
			if(http.readyState==1){
				popup.create(150,90);
				popup.printContent('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Saving Practice...<\/td><\/tr><\/table>');
			}
			if(http.readyState==4){
				popup.close();
				alert('Practice Saved:\nPlease check your account to see saved practices.');
			}
		}
		http.send(null);
	},
	delSaved:function(businessID){
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=delSaved&id='+businessID);
		http.onreadystatechange=function(){
			http.readyState==4?getData('practice','saved'):'';
		}
		http.send(null);
	},
	search:function(){
		var professionID=document.getElementById('professionsearch').options[document.getElementById('professionsearch').selectedIndex].value;
		var acquisitionsearch= (document.getElementById('salestypes')) ? document.getElementById('salestypes').options[document.getElementById('salestypes').selectedIndex].value : '';
		var keywords=document.getElementById('searchkeywords').value;
		var titles=document.getElementById('title').checked;
		window.location='/practice/searchresults.php?professionID='+professionID+'&saletypeID='+acquisitionsearch+'&keywords='+keywords+'&titles='+titles+'&state=&suburb=&page=1&nbr=20&sort=&sorttype=&extended=false';
	},
	advancedSearch:function(){
		var professionID=document.getElementById('advprofessionsearch').options[document.getElementById('advprofessionsearch').selectedIndex].value;
		var acquisitionsearch='';
		if(document.getElementById('advsalestypes'))
			acquisitionsearch=document.getElementById('advsalestypes').options[document.getElementById('advsalestypes').selectedIndex].value;
		var keywords=document.getElementById('advsearchkeywords').value;
		var titles=document.getElementById('advtitle').checked;

		var extparam='';
		var ext = document.getElementById('extendedoptions');
		var inputs = ext.getElementsByTagName('input');
		var selects = ext.getElementsByTagName('select');

		for(var i=0; i<inputs.length; i++){
			if(extparam=='')
				extparam='&extparam=';
			else
				extparam+=',';
			extparam+=inputs[i].name+':'+inputs[i].value;
		}
		for(var i=0; i<selects.length; i++){
			if(extparam=='')
				extparam='&extparam=';
			else
				extparam+=',';
			extparam+=selects[i].name+':'+selects[i].options[selects[i].selectedIndex].value;
		}
		window.location='/practice/searchresults.php?professionID='+professionID+'&saletypeID='+acquisitionsearch+'&keywords='+keywords+'&titles='+titles+'&page=1&nbr=20&sort=&sorttype=&extended=true'+extparam;
	},
	extendedSearchOptions:function(){
		var opt=document.getElementById('extendedoptions');
		var profession=document.getElementById('advprofessionsearch').options[document.getElementById('advprofessionsearch').selectedIndex].value;
		var salestype=document.getElementById('advsalestypes')?document.getElementById('advsalestypes').options[document.getElementById('advsalestypes').selectedIndex].value:'';
		if(profession=='' && salestype=='') {
			opt.innerHTML='<span style="color:red">Please select a profession</span>';
			return;
		}
		var http=createRequestObject();
		http.open('get','index.php?action=extendedsearch&professionID='+profession+'&salestypeID='+salestype);
		http.onreadystatechange=function(){
			http.readyState==1?opt.innerHTML='<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Loading extended options...<\/td><\/tr><\/table>':'';
			http.readyState==4?opt.innerHTML=http.responseText:'';
		}
		http.send(null);
	},
	saveSearch:function(searchID){
		var http=createRequestObject();
		http.open('get','/practice/index.php?action=savesearch&searchID='+searchID);
		http.onreadystatechange=function(){
			http.readyState==1?alert('Saving Your Search'):'';
			http.readyState==4?alert('Practice Search Saved:\n\nPlease see your account to check on saved searches'):'';
		}
		http.send(null);
	},

	/*	Toggle information available
	 */
	showBriefInfo:function(){
		var divs = document.getElementsByTagName('div');
		for(var i=0;i<divs.length;i++){
			if(divs[i].className=='infoavailable'){
				divs[i].style.display = divs[i].style.display=='none' ? 'block':'none';
				document.getElementById('info').innerHTML = divs[i].style.display=='block' ? '<img src="/green.png"/>':'<img src="/red.png"/>';
			}
		}
	},

	/*	Toggle viewing stats
	 */
	showBriefViews:function(){
		var divs = document.getElementsByTagName('div');
		for(var i=0;i<divs.length;i++){
			if(divs[i].className=='viewstats'){
				divs[i].style.display = divs[i].style.display=='none' ? 'block':'none';
				document.getElementById('views').innerHTML = divs[i].style.display=='block' ? '<img src="/green.png"/>':'<img src="/red.png"/>';
			}
		}
	},

	/*	Show basic, detailed or complete information
	 */
	showInfo:function(businessID,pagetype){
		var http=createRequestObject();
		http.open('get','/practice/index.php?action=showinfo&id='+businessID+'&page='+pagetype);
		http.onreadystatechange=function(){
			if(http.readyState==1){
				document.getElementById('info_display').innerHTML='<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Loading information...<\/td><\/tr><\/table>';
			} else if(http.readyState==4) {
				document.getElementById('info_display').innerHTML=http.responseText;
				var tab_container = document.getElementById('view_tab');
				var tabs = tab_container.getElementsByTagName('li');
				for(var i=0; i<tabs.length; i++) {
					var tmptype = tabs[i].id.substring(4,tabs[i].id.length);
					if(tmptype==pagetype)
						tabs[i].className = 'curview';
					else if(tabs[i].className!='noview')
						tabs[i].className = '';
				}
			}
		}
		http.send(null);
	},

	viewGraph:function(businessID){
		popup.create(750,300);
		popup.overflow='hidden';
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=popupgraph&businessID='+businessID+'&type=allviews&title=Viewing Statistics');
		http.onreadystatechange=function(){
			http.readyState==1?popup.useTemplate('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/></td><td>Loading graph...</td></tr></table>'):popup.clearContent();
			http.readyState==4?popup.useTemplate(http.responseText):'';
		}
		http.send(null);
	},

	showEnquiryForm:function(businessID,userID){
	   /*  popup.create(400,460);
		popup.title='Business Enquiry';	 */
		var http=createRequestObject();
		http.open('get','/practice/enquiry.php?action=form&id='+businessID);
		http.onreadystatechange=function(){
			if(http.readyState==4){

				if(!document.getElementById('contactEnquiry')){
					var node=document.createElement('div');
					node.className='containerMain';
					node.id='contactEnquiry';
					document.getElementById('container').insertBefore(node,document.getElementById('container').firstChild);
				}
				document.getElementById('contactEnquiry').innerHTML='<div class="containerHead"></div><div class="containerBody" id="contactEnquiryBody">'+http.responseText+'</div><div class="containerFoot"></div>';
			}
		}
		http.send(null);
	},

	/* Submit enquiry
	 */
	sendEnquiry:function(businessID){
		var frmvalues=practice.getFormValues('enquiry_form');
		var http=createRequestObject();
		http.open('get','/practice/enquiry.php?action=send&id='+businessID+'&'+frmvalues);
		http.onreadystatechange=function(){
			if(http.readyState==1){
				popup.clearContent();
				popup.useTemplate('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Sending enquiry...<\/td><\/tr><\/table>');
			}
			if(http.readyState==4) {
				popup.close();
				practice.requestContact(businessID,0);
				document.getElementById('contactEnquiryBody').innerHTML='<h2>Thank you</h2>Your Enquiry has now been submitted.<br>You should be able to view the contact details under the "Contact Information" window on the right.';
			}
		}
		http.send(null);
	},
	removeEnquiry:function(node){
		var ok=confirm('Do you wish to delete this practice enquiry?');
		if(ok){
			while(node.tagName!=='TR')
				node=node.parentNode;
			var id=node.id;
			var http=createRequestObject();
			http.open('GET','/myaccount/practices/update.php?ajax=true&type=enquiry&delete=1&eid='+id,true);
			http.onreadystatechange = function() {
				if(http.readyState == 4 && http.status == 200)
					node.parentNode.removeChild(node);
			}
			http.send(null);
		}
		return false;
	},
	enquiryRead:function(eid){
		 getData('practice','enquiry:'+eid);
	},

	/*	Activate / De-activate business listing
	 */
	activate:function(businessID,activate,page){
		var http=createRequestObject();
		var url = '/activate.php?';
		if(activate)
			url += 'businessID='+businessID;
		else
			url += 'dbusinessID='+businessID;

		http.open('get',url);
		http.onreadystatechange=function(){
			http.readyState==1?document.getElementById('pagecontent').innerHTML='<table height="300" width="100%"><tr valign="middle"><td align="center"><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><br \/><b>Updating practice ...<\/b><\/td><\/tr><\/table>':'';
			http.readyState==4?getData('practice',page):'';
		}
		http.send(null);
	},

	// retrieve all values from inputs of a form
	getFormValues:function(formID){
		var frm = document.getElementById(formID);
		var frmvalues='';

		// grab values of text fields
		var inputs = frm.getElementsByTagName('input');
		for(var i=0; i<inputs.length; i++) {
			if(inputs[i].type == "text"){
				frmvalues += inputs[i].name + "=" + escape(inputs[i].value) + "&";
			} else if(inputs[i].type == "hidden" && inputs[i].className == "submit") {
				frmvalues += inputs[i].name + "=" + escape(inputs[i].value) + "&";
			}
		}

		// grab selected dropdown option
		var selects = frm.getElementsByTagName('select');
		for(var i=0; i<selects.length; i++) {
			frmvalues += selects[i].name + "=" + selects[i].options[selects[i].selectedIndex].value + "&";
		}

		// grab values of textarea
		var txtareas = frm.getElementsByTagName('textarea');
		for(var i=0; i<txtareas.length; i++) {
			frmvalues += txtareas[i].name + "=" + escape((txtareas[i].value.replace("\n","<br />"))) + "&";
		}

		if(frmvalues.substring(frmvalues.length-1) == '&') {
			frmvalues = frmvalues.substring(0, frmvalues.length-1);
		}
		return frmvalues;
	},
	// clear recently viewed practice history
	clearhistory:function(){
		var http=createRequestObject();
		http.open('get','/practice/?action=clearhistory');
		http.onreadystatechange=function(){
			http.readyState==4?document.getElementById('recentlyviewed').innerHTML='<table><tr><td><img alt="Error" src="/images/icons/error.png" /></td><td class="error">Practice History cleared</td></tr></table>':'';
		}
		http.send(null);
	},
	// delete a practice in an account's watchlist
	deleteWatch:function(watchID){
		var ok=confirm('Do you wish to delete this practice watch?');
		if(ok){
			var http=createRequestObject();
			http.open('get','/myaccount/watch.php?action=delprac&watchID='+watchID);
			http.onreadystatechange=function(){
				http.readyState==1?'':'';
				if(http.readyState==4){
					practice.removeRow('practicewatchtbl',watchID);
					alert('Practice Watch Deleted');
				}
			}
			http.send(null);
		}
	},
	removeRow:function(tableID,rowID){
		var tbl=document.getElementById(tableID);
		for(var i=0;i<tbl.rows.length;i++) {
			if(tbl.rows[i].getAttribute('id')==rowID){
				tbl.deleteRow(i);
			}
		}
	},

	/*	Request contact information for a practice
	 */
	requestContact:function(businessID,request){
		var http=createRequestObject();
		http.open('get','/practice/?action=requestcontact&id='+businessID+'&req='+request);
		http.onreadystatechange=function(){
			http.readyState==1?document.getElementById('contactinfo').innerHTML='<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/></td><td>Requesting information..</td></tr></table>':'';
			http.readyState==4?document.getElementById('contactinfo').innerHTML=http.responseText:'';
		}
		http.send(null);
	},

	/*	Delete a practice
	 */
	deletePractice:function(obj,businessID){
		var ok = confirm('Do you wish to delete this practice?');
		if(ok){
			if(obj){
			while(obj.tagName!=='TR')
				obj=obj.parentNode;
			}
			obj.parentNode.removeChild(obj);
			var http=createRequestObject();
			http.open('get','/myaccount/practices/update.php?ajax=true&delete=true&id='+businessID);
			http.send(null);
		}
		return false;
	},
	overview:function(infotype,businessID){
		var brief=1;
		var legend='';
		if(infotype=='attachments') {
			legend='Image Attachments';
		} else if(infotype=='stats') {
			legend = 'Statistics';
			brief=0;
		} else if(infotype=='enquiries'){
			legend = 'Enquiries';
		} else if(infotype=='basic'){
			legend = 'Basic Information';
		} else if(infotype=='detailed'){
			legend = 'Detailed Information';
		} else if(infotype=='complete'){
			legend = 'Complete Information';
		}
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=printinfo&businessID='+businessID+'&infotype='+infotype+'&brief='+brief);
		http.onreadystatechange=function(){
			http.readyState==1?document.getElementById('overviewcontent').innerHTML = '<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Loading information...<\/td><\/tr><\/table>':'';
			if(http.readyState==4){
				var resp = '<fieldset><legend class="legend">'+legend+'</legend><br/>'+http.responseText+'<br/></fieldset>';
				document.getElementById('overviewcontent').innerHTML=resp;
			}
		}
		http.send(null);
	},

	/*	Preview a selected image uploaded for a business
	 */
	showImage:function(imageID){
		popup.close();
		popup.create(750,0);
		popup.title='Image Attachment';
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?item=image&imageID='+imageID);
		http.onreadystatechange=function(){
			http.readyState==1?popup.useTemplate('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/></td><td>Loading image attachment...<\/td><\/tr><\/table>'):popup.clearContent();
			http.readyState==4?popup.useTemplate(http.responseText):'';
		}
		http.send(null);
	},

	/*	Update an attachment's display property
	 */
	updateAttachment:function(businessID,attachmentID,display){
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=updateAttachment&id='+attachmentID+'&display='+display+'&businessID='+businessID);
		http.onreadystatechange=function(){
			http.readyState==1?document.getElementById('overviewcontent').innerHTML = '<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/></td><td>Updating Attachment...<\/td><\/tr><\/table>':'';
			http.readyState==4?practice.overview('attachments',businessID):'';
		}
		http.send(null);
	},

	/*	Delete a business attachment
	 */
	delAttachment:function(attachmentID){
		var ok=confirm('Do you wish to delete this attachment?');
		if(ok) {
			var http=createRequestObject();
			http.open('get','/myaccount/practice.php?action=delAttachment&attachmentID='+attachmentID);
			http.onreadystatechange=function(){
				if(http.readyState==1){
					popup.create(200,90);
					popup.printContent('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/></td><td>Deleting image attachment...<\/td><\/tr><\/table>');
				}
				if(http.readyState==4){
					popup.close();
					practice.removeRow('attachmentTBL',attachmentID);
					document.getElementById('totalimages').innerHTML = Number(document.getElementById('totalimages').innerHTML)-1;
				}
			}
			http.send(null);
		}
	},

	/*	Delete an enquiry
	 */
	delEnquiry:function(enquiryID,businessID){
		var ok=confirm('Do you wish to delete this enquiry?');
		if(ok) {
			var http=createRequestObject();
			http.open('get','/myaccount/practice.php?action=delEnquiry&enquiryID='+enquiryID);
			http.onreadystatechange=function(){
				if(http.readyState==4){
					alert('Enquiry Deleted');
					practice.overview('enquiries',businessID);
				}
			}
			http.send(null);
		}
	},

	/*	Mark an enquiry as responded
	 */
	updateEnquiry:function(enquiryID){
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=updateEnquiry&enquiryID='+enquiryID);
		http.onreadystatechange=function(){
			http.readyState==4?practice.overview('enquiries',http.responseText):'';
		}
		http.send(null);
	},

	/*	Validate edit contact form
	 */
	validateEditContact:function(){
		var cname = document.getElementById('input_contactname').value;
		var cph = document.getElementById('input_contactphone').value;
		var cemail = document.getElementById('input_contactemail').value;
		var errortext='';
		if(cname==''){
			errortext+='<tr><td><\/td><td>- Missing Contact Name<\/td><\/tr>';
		}
		if(cph=='' && cemail==''){
			errortext+='<tr><td><\/td><td>- Missing Contact Phone\/Email<\/td><\/tr>';
		} else if(cemail!=''){
			if(cemail.search(/^[\d\w\/+!=#|$?%{^&}*`'~-][\d\w\/\.+!=#|$?%{^&}*`'~-]*@[A-Z0-9][A-Z0-9.-]{1,61}[A-Z0-9]\.[A-Z]{2,6}$/i) == -1)
				errortext+='<tr><td></td><td>- Invalid Email Address</td></tr>';
		}
		if(errortext!=''){
			popup.create(300,130);
			popup.title='Contact Information';
			popup.useTemplate('<div style="padding:10px"><table width="100%"><tr><td><img src="/images/icons/error.png"></td>'
								+'<td><b>Missing Information:</td></tr>'+errortext+'</table></div>');
			return false;
		}
		return true;
	},

	/*	Validate edit practice form
	 */
	validateEditPractice:function(){
		var profession=document.getElementById('professions').options[document.getElementById('professions').selectedIndex].value;
		var salestype=document.getElementById('salestypes')?document.getElementById('salestypes').options[document.getElementById('salestypes').selectedIndex].value:'';
		var title=document.getElementById('title').value;
		var daystorun=document.getElementById('daystorun').options?document.getElementById('daystorun').options[document.getElementById('daystorun').selectedIndex].value:document.getElementById('daystorun').value;
		var errortext='';

		if(profession==''){
			errortext+='<tr><td></td><td>- Missing Profession</td></tr>';
		}
		if(document.getElementById('salestypes') && salestype==''){
			errortext+='<tr><td></td><td>- Missing Acquisition Type</td></tr>';
		}
		if(title==''){
			errortext+='<tr><td></td><td>- Missing Title</td></tr>';
		}
		if(daystorun==''){
			errortext+='<tr><td></td><td>- Missing Days to Run</td></tr>';
		}

		if(errortext!=''){
			popup.create(250,150);
			popup.useTemplate('<div style="padding:10px"><table width="100%"><tr><td><img src="/images/icons/error.png"></td>'
									+'<td><b>Missing Information:</td></tr>'+errortext
									+'</table></div>');
			return false;
		}
		popup.close();
		return true;
	},

	/*	Validate add practice form
	 */
	validateForm:function(){
		var errbg='#EFEFEF';

		var reference=document.getElementById('reference').value;
		var profession=document.getElementById('professions').options[document.getElementById('professions').selectedIndex].value;
		var title=document.getElementById('title').value;
		var daystorun=document.getElementById('daystorun').options[document.getElementById('daystorun').selectedIndex].value;
		var cname=document.getElementById('contactname').value;
		var cph=document.getElementById('contactph').value;
		var cemail=document.getElementById('contactemail').value;
		var errortext='';

		if(reference==''){
			errortext+='<tr><td></td><td>- Missing Reference</td></tr>';
			document.getElementById('reference').style.backgroundColor=errbg;
		}else{
			document.getElementById('reference').style.backgroundColor='';
		}
		if(profession==''){
			errortext+='<tr><td></td><td>- Missing Profession</td></tr>';
			document.getElementById('professions').style.backgroundColor=errbg;
		}else{
			document.getElementById('professions').style.backgroundColor='';

			var salestype=document.getElementById('salestypes')?document.getElementById('salestypes').options[document.getElementById('salestypes').selectedIndex].value:'';
			if(salestype==''){
				if(document.getElementById('salestypes')){
					errortext+='<tr><td></td><td>- Missing Sales Type</td></tr>';
					document.getElementById('salestypes').style.backgroundColor=errbg;
				}
			}else{
				document.getElementById('salestypes').style.backgroundColor=errbg;
			}
		}
		if(title==''){
			errortext+='<tr><td></td><td>- Missing Title</td></tr>';
			document.getElementById('title').style.backgroundColor=errbg;
		}else{
			document.getElementById('title').style.backgroundColor='';
		}
		if(daystorun==''){
			errortext+='<tr><td></td><td>- Missing Days to Run</td></tr>';
			document.getElementById('daystorun').style.backgroundColor=errbg;
		}else{
			document.getElementById('daystorun').style.backgroundColor='';
		}
		if(cname==''){
			errortext+='<tr><td></td><td>- Missing Contact Name</td></tr>';
			document.getElementById('contactname').style.backgroundColor=errbg;
		}else{
			document.getElementById('contactname').style.backgroundColor='';
		}
		if(cph=='' && cemail==''){
			errortext+='<tr><td></td><td>- Missing Contact Method</td></tr>';
			document.getElementById('contactph').style.backgroundColor=errbg;
			document.getElementById('contactemail').style.backgroundColor=errbg;
		} else {
			document.getElementById('contactph').style.backgroundColor='';
			document.getElementById('contactemail').style.backgroundColor='';
		}
		if(cemail!='') {
			var http=createRequestObject();
			http.open('post','/validateEmail.php?email='+cemail);
			http.onreadystatechange=function(){
				if(http.readyState==4){
					if(http.responseText!='OK'){
						errortext+='<tr><td></td><td>- Invalid Email Address</td></tr>';
						document.getElementById('contactemail').style.backgroundColor=errbg;
					} else {
						document.getElementById('contactemail').style.backgroundColor='';
					}
					if(errortext==''){
						document.forms[0].submit();
						return true;
					}else{
						popup.create(280,200);
						popup.title='Business Information';
						popup.useTemplate('<div style="padding:10px"><table><tr><td><img src="/images/icons/error.png"/></td><td><b>MISSING INFORMATION:</b></td></tr>'+
							errortext+'</table></div>');
						return false;
					}
				}
			};
			http.send(null);
		} else {
			if(errortext==''){
				document.forms[0].submit();
				return true;
			}else{
				popup.create(280,200);
				popup.title='Business Information';
				popup.useTemplate('<div style="padding:10px"><table><tr><td><img src="/images/icons/error.png"/></td><td><b>MISSING INFORMATION:</b></td></tr>'+
					errortext+'</table></div>');
				return false;
			}
		}
	},

	/* Import contact details
	 */
	importMyDet:function(){
	    var http=createRequestObject();
	    http.open('get','/myaccount/practice.php?action=getUserDet');
	    http.onreadystatechange=function(){
		    if(http.readyState==4){
			    eval(http.responseText);
			    document.getElementById('contactname').value=user['name'];
				document.getElementById('contactph').value=user['phone'];
				document.getElementById('contactemail').value=user['email'];
			}
		}
		http.send(null);
	},

	/* Search practices
	 */
	practiceSearch:function(keywords,titles,professionID,saleTypeID,region,state,dateposted,page,nbr,extended,extparam){
		var http=createRequestObject();
		http.open('get','index.php?action=search&keywords='+keywords+'&titles='+titles+'&professionID='+professionID+'&saletypeID='+saleTypeID+'&region='+region+'&state='+state+'&dateposted='+dateposted+'&page='+page+'&nbr='+nbr+'&extended='+extended+'&extparam='+extparam);
		http.onreadystatechange=function(){
			if(http.readyState==1){
				document.getElementById('searchresults').innerHTML='<table height="300" width="100%"><tr valign="middle"><td align="center"><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><br \/><b>Searching practices database ...<\/b><\/td><\/tr><\/table>';
			}

			if(http.readyState==4){
				document.getElementById('searchresults').innerHTML=http.responseText;
			}
		}
		http.send(null);
	},

	 /* Upload an attachment
	 */
	upload:function(businessID){
		practice.overview('attachments',businessID);
	},
	/*upload:function(businessID){
		var msgdiv = document.getElementById('uploadmsg');

		var input = document.getElementById('imageupload');
		var img = input.value;
		if(img=='') return;

		input.disabled = true;

		var http=createRequestObject();
		http.open('get','/myaccount/upload.php?businessID='+businessID+'&file='+img);
		http.onreadystatechange=function(){
			if(http.readyState==4){
				msgdiv.innerHTML='';
				input.disabled = false;

				// print out uploaded image
				var values = http.responseText;
				values = values.split("#");
				var imgID=0;
				var imagefile='';
				var imglink='';
				for(var i=0; i<values.length;i++){
					if(values[i].substring(0,values[i].indexOf(":")) == 'error'){
						msgdiv.innerHTML = '<br/><br/><span style="color:red">'+values[i].substring(values[i].indexOf(":")+1)+'</span>';
						return;
					}
					if(values[i].substring(0,values[i].indexOf(":")) == 'image')
						imglink = values[i].substring(values[i].indexOf(":")+1);
					if(values[i].substring(0,values[i].indexOf(":")) == 'file')
						imgfile = values[i].substring(values[i].indexOf(":")+1);
					if(values[i].substring(0,values[i].indexOf(":")) == 'imgID')
						imgID = values[i].substring(values[i].indexOf(":")+1);
				}

				input.value = '';

				document.getElementById('totalimages').innerHTML = Number(document.getElementById('totalimages').innerHTML)+1;
				var tbl=document.getElementById('attachmentTBL');

				if(tbl.rows[tbl.rows.length-1].className=='error'){
					tbl.deleteRow(tbl.rows.length-1);
				}

				var newrow = tbl.insertRow(tbl.rows.length);
				var cell0 = newrow.insertCell(0);
				cell0.style.textAlign='center';
				var cell1 = newrow.insertCell(1);
				var cell2 = newrow.insertCell(2);
				var cell3 = newrow.insertCell(3);
				cell3.style.textAlign='center';
				var cell4 = newrow.insertCell(4);
				cell4.style.textAlign='center';

				newrow.id = imgID;

				var today = new Date();
				var udate = Array(
									(today.getDate()<10?'0':'')+today.getDate(),
									((today.getMonth()+1)<10?'0':'')+(today.getMonth()+1),
									today.getFullYear()
								);

				cell0.innerHTML = imglink;
				cell1.innerHTML = imgfile;
				cell2.innerHTML = udate[0]+'-'+udate[1]+'-'+udate[2];
				cell3.innerHTML = '<a href="javascript:void(practice.updateAttachment('+businessID+','+imgID+',true))" title="Click to make this attachment available to visitors">No</a>';
				cell4.innerHTML = '<a href="javascript:void(practice.delAttachment('+imgID+'))">'
									+'<img src="/images/icons/deleted.gif" alt="Delete this image"/></a>';
			} else {
				msgdiv.innerHTML='<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/></td><td>Uploading...</td></tr></table>';
			}
		}
		http.send(null);
	},*/

	/* Print Listing
	 */
	printInfo:function(){
		var printwin=window.open('/practice/printview.php','Print','height=500,width=700,scrollbars=yes');
		if(window.focus){printwin.focus()}
		/* printwin.print();	*/
	},

	/* Mark practice as sold
	 */
	sold:function(businessID,page){
		var reply=confirm("Are you sure you want to mark this practice as SOLD?");
		if(reply){
			var http=createRequestObject();
			http.open('get','/myaccount/practice.php?action=sold&businessID='+businessID);
			http.onreadystatechange=function(){
				if(http.readyState==1){
					popup.create(150,90);
					popup.printContent('<table><tr><td><img alt="Loading" src="\/images\/loading\/greysnake.gif" \/><\/td><td>Updating practice...<\/td><\/tr><\/table>');
				}
				if(http.readyState==4){
					popup.close();
					if(page=='viewall') {
						getData('practice','all');
					} else {
						window.location=window.location;
					}
				}
			}
			http.send(null);
		}
	},
	swapImage:function(obj){
		document.getElementById('imageWindow').getElementsByTagName('IMG')[0].src=obj.src;
	}
	,setAcquisition:function(val,onode){
		var item=(!onode)?document.getElementById('saletypeID'):document.getElementById(onode);
	/* 	while(item.firstChild){
			item.removeChild(item.firstChild);
		} */
		item.innerHTML='<option>Loading...</option>';

		var http=createRequestObject();
		http.open('get','/practice/index.php?action=getacqui&id='+val);
		http.onreadystatechange=function(){
			if(http.readyState==4){
				while(item.firstChild){
					item.removeChild(item.firstChild);
				}
				acqui=http.responseText.split('(')[1].split(')')[0].split(';');
 				for(var i=0;i<acqui.length;i++){
					var newitem=document.createElement('option');
					newitem.value=acqui[i].split(':')[0];
					newitem.innerHTML=acqui[i].split(':')[1];
					if(newitem.value)item.appendChild(newitem);
				}
				//all acquisitions
				var newitem=document.createElement('option');
				newitem.value=' ';
				if(item.firstChild){
					newitem.innerHTML='All Sub-Acquisitions';
					item.insertBefore(newitem,item.firstChild);
				}
				else {
					newitem.innerHTML='No Sub-Acquisitions';
					item.appendChild(newitem);

				}
			}
		}
		http.send(null);
	}
}

var newpractice={
	save:function(ID,itemID){
		var qstr='';
		var next='';

		if(itemID=='overview'){
			if(document.getElementById('reference').value=='' || document.getElementById('title').value=='' || document.getElementById('professionID').options[document.getElementById('professionID').selectedIndex].value=='' || document.getElementById('saleTypeID').options[document.getElementById('saleTypeID').selectedIndex].value=='' || document.getElementById('state').options[document.getElementById('state').selectedIndex].value==''){
				alert('Missing Required Information:'+"\n\n"+'To create a new business listing, we require that the reference, title, profession, sale type and state are selected as a minimum.');
			}else{
				qstr="?action=save&ID="+ID+
					"&Reference="+escape(document.getElementById('reference').value)+
					"&Title="+escape(document.getElementById('title').value)+
					"&ProfessionID="+escape(document.getElementById('professionID').options[document.getElementById('professionID').selectedIndex].value)+
					"&SaleTypeID="+escape(document.getElementById('saleTypeID').options[document.getElementById('saleTypeID').selectedIndex].value)+
					"&State="+escape(document.getElementById('state').options[document.getElementById('state').selectedIndex].value)+
					"&RegionID="+escape(document.getElementById('regionID').options[document.getElementById('regionID').selectedIndex].value)+
					"&Price="+escape(document.getElementById('price').value);
				//alert(qstr);
				next="getSubData('practice','add:"+ID+":det');";
			}
		}else if(itemID=='details'){
			qstr="?action=save&ID="+ID+
				"&Abstract="+escape(document.getElementById('abstractedit').value.replace(/\n/g,"<br>"))+
				"&Description="+escape(document.getElementById('descriptionedit').value.replace(/\n/g,"<br>"));
			next="getSubData('practice','add:"+ID+":con');";
		}else if(itemID=='contact'){
			qstr="?action=save&ID="+ID+
				"&Contactname="+escape(document.getElementById('contactname').value)+
				"&Contactphone="+escape(document.getElementById('contactphone').value)+
				"&Contactemail="+escape(document.getElementById('contactemail').value);
			next="getSubData('practice','add:"+ID+":att');";
		}else if(itemID=='attachments'){

		}else if(itemID=='pay'){
			if(document.getElementById('paynow')){
				var pay=0;
				if(document.getElementById('paynow').checked){ pay=1; }
				qstr="?action=save&ID="+ID+
					"&Paid="+pay;
			}
			next="getSubData('practice','add:"+ID+":act');";
		}else if(itemID=='activate'){
			qstr="?action=save&ID="+ID+
					"&Active=1";
			next="getSubData('practice','view:"+ID+"');";
		}

		if(next!=''){
			var http=createRequestObject();
			http.open('get','/myaccount/practice.php'+qstr);
			http.onreadystatechange=function(){
				if(http.readyState==4){
					//alert(http.responseText);
					eval(next);
				}
			};
			http.send(null);
		}
	},
	start:function(){
		var http=createRequestObject();
		http.open('get','/myaccount/practice.php?action=create');
		http.onreadystatechange=function(){

			if(http.readyState==4&&http.status==200){
				getSubData('practice','add:'+http.responseText+':ovr');
			}
		};
		http.send(null);
	}
}

var tab={
	//show tab
	show:function(item){
		var divs=document.getElementById('tabable').childNodes;
		var tabs=document.getElementById('tabs').firstChild.childNodes;
		for(var i=0;i<divs.length;i++)
			if(divs[i].tagName=='DIV'&&divs[i].parentNode.id=='tabable')
				divs[i].className=((item+'Div')==divs[i].id)?'visible':'hide';
		for(var i=0;i<tabs.length;i++)
			if(tabs[i].tagName=='LI'){
				tabs[i].className=(item==tabs[i].firstChild.id)?'visible':'hide';
				tabs[i].firstChild.className=((item)==tabs[i].firstChild.id)?'visible':'hide';
			}
		return false;
	}
}
var aumap={
	//australian map
	swapMap:function(state){
		var map=document.getElementById('map');
		map.src=map.src.replace(/[a-z]+\.gif/g, state+".gif");
	},
	restoreMap:function(){
		aumap.swapMap('aus');
	}

}
var menu={
	showHide:function(obj){
		var bgimg=obj.firstChild.style.backgroundImage;
		obj.firstChild.style.backgroundImage=((bgimg==''&&(obj.className.indexOf('alt')<=0))||(bgimg.indexOf('min')>0))?'url(/images/p4s/search_box_max.gif)':'url(/images/p4s/search_box_min.gif)';
		document.getElementById(obj.id+'Sub').style.display=((bgimg==''&&(obj.className.indexOf('alt')<=0))||(bgimg.indexOf('min')>0))?'none':'block';
	}
}
