


function f_filterResults(n_win, n_docel, n_body)
	{
	var n_result = n_win ? n_win : 0;
	if (n_docel && (!n_result || (n_result > n_docel))) {n_result = n_docel;}
	return n_body && (!n_result || (n_result > n_body)) ? n_body : n_result;
	}

function f_clientWidth() 
	{
	return f_filterResults(window.innerWidth ? window.innerWidth : 0, document.documentElement ? document.documentElement.clientWidth : 0, document.body ? document.body.clientWidth : 0);
	}

function f_clientHeight()
	{
	return f_filterResults(window.innerHeight ? window.innerHeight : 0, document.documentElement ? document.documentElement.clientHeight : 0, document.body ? document.body.clientHeight : 0);
	}

function f_scrollLeft()
	{
	return f_filterResults(window.pageXOffset ? window.pageXOffset : 0, document.documentElement ? document.documentElement.scrollLeft : 0, document.body ? document.body.scrollLeft : 0);
	}

function f_scrollTop()
	{
	return f_filterResults(window.pageYOffset ? window.pageYOffset : 0, document.documentElement ? document.documentElement.scrollTop : 0, document.body ? document.body.scrollTop : 0);
	}

 // -------------------------------------------------------------------------------
	 
function showlogin()
	{
	state=document.getElementById('logindiv').style.display;
	if(state == 'none') document.getElementById('logindiv').style.display='block';
	else document.getElementById('logindiv').style.display='none';
	}
	
 // -------------------------------------------------------------------------------
	 
function showImageUploadWarning(mode)
	{
	if(mode == 'add')
		{
		pic1=document.getElementById('pic1').value;
		pic2=document.getElementById('pic2').value;
		pic3=document.getElementById('pic3').value;
		pic4=document.getElementById('pic4').value;
	
		if(pic1 != '' || pic2 != '' || pic3 != '' || pic4 != '')
			{
			document.getElementById('warning').innerHTML='Please wait whilst image(s) are uploaded...';
			}		
		}

	if(mode == 'edit')
		{
		pic1=document.getElementById('pic1').value;
		pic2=document.getElementById('pic2').value;
	
		if(pic1 != '' || pic2 != '')
			{
			document.getElementById('warning').innerHTML='Please wait whilst image(s) are uploaded...';
			document.getElementById('warning2').innerHTML='Please wait whilst image(s) are uploaded...';
			}		
		}
	}

 // -------------------------------------------------------------------------------
	 
function toggleAdvSearch()
	{
	var state=document.getElementById('filterdiv');
	
	if(state.style.display == 'none')
		{
		state.style.display = 'block';	
		document.getElementById('advsearch').value="yes";
		document.getElementById('advsearchprompt').innerHTML="- Close";
		getResultsDiv();
		}

	else
		{
		state.style.display = 'none';	
		document.getElementById('advsearch').value="no";
		document.getElementById('advsearchprompt').innerHTML="+ Advanced Search";
		getResultsDiv();
		}
	}

 // -------------------------------------------------------------------------------
	 
function openWindow(url,name)
	{
	var posh=(screen.availWidth-700)/2;
	var posv=(screen.availHeight)/2;
	var params='width=700,height=100,left='+posh+',top=200,scrollbars=yes';
	//var params='width=700,height=100';
	
	//alert(params);
	
	window.open(url,name,params);
	}

 // -------------------------------------------------------------------------------
	 
function GetXmlHttpObject()
	{
	var xmlHttp=null;
	try
 		{
 		// Firefox, Opera 8.0+, Safari
 		xmlHttp=new XMLHttpRequest();
 		}
	
	catch (e)
 		{
 		// Internet Explorer
 		try
  			{
  			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  			}
 		catch (e)
  			{
  			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  			}
 		}
	return xmlHttp;
	}

  // -------------------------------------------------------------------------------

function doUrlEncodeEx(string)
	{
	var temp=string;
	
	temp=temp.replace("&",'~~and');
	temp=temp.replace(".",'~~dot');
	temp=temp.replace(",",'~~com');
	temp=temp.replace(" ",'~~sp');
	temp=temp.replace("(",'~~lb');
	temp=temp.replace(")",'~~rb');
	temp=temp.replace("[",'~~lsb');
	temp=temp.replace("]",'~~rsb');
	temp=temp.replace("-",'~~dsh');
	temp=temp.replace("%",'~~pc');
	temp=temp.replace(":",'~~cln');
	temp=temp.replace(";",'~~scln');
	temp=temp.replace("/",'~~fs');
	temp=temp.replace("\\",'~~bs');
	temp=temp.replace("\"",'~~dq');
	temp=temp.replace("\'",'~~sq');
	temp=temp.replace("!",'~~ex');
	temp=temp.replace("@",'~~at');
	temp=temp.replace("=",'~~eq');
	temp=temp.replace("|",'~~pp');
	temp=temp.replace("+",'~~pl');
	
	return temp;
	
	}

 // -------------------------------------------------------------------------------

function ciUrlEncodeEx(string)
	{
	var tempstring=string;
	var resultstring='';
	var ix=0;
	
	for(ix=0;ix<100;ix++)
		{
		resultstring=doUrlEncodeEx(tempstring);		
		if(resultstring == tempstring) {break;}
		tempstring=resultstring;
		}
		
	return resultstring;
	}

  // -------------------------------------------------------------------------------

function insertResultsDiv() 
	{ 
	if (xh5.readyState==4 || xh5.readyState=="complete")
 		{
 		//alert(xh5.responseText);
 		
 		document.getElementById('resultsdiv').innerHTML=xh5.responseText;

		var totalnum=1*(document.getElementById('numresults').value);
		var startnum=1*(document.getElementById('start').value) +1;
		var endnum=0;
		
		if((startnum + 10) > totalnum)
			{
			endnum=totalnum;
			} 
		else
			{
			endnum=startnum + 9;
			}
			
		if(totalnum === 0) {startnum=0;}

  		//document.getElementById('viewing').innerHTML="Viewing " + startnum + " ";
  		document.getElementById('viewing').innerHTML=startnum + " ";
  		document.getElementById('viewing2').innerHTML=endnum+'';
		
  		//document.getElementById('viewingex').innerHTML="Viewing " + startnum + " ";
  		document.getElementById('viewingex').innerHTML=startnum + " ";
  		document.getElementById('viewing2ex').innerHTML=endnum+'';
		
		}
 	 }
 
  // -------------------------------------------------------------------------------
 
 function getResultsDiv()
	{
	var ix;
	var cvalue;
	var sep="";	// Used to separate param elements.
	var paramstring="";
	var url=document.getElementById('getresultsdivurl').value;
	var category=document.getElementById('currentcat').value;
	var categoryenc=ciUrlEncodeEx(category);
	var start=document.getElementById('start').value;
	var length=document.getElementById('length').value;
	var postcode=document.getElementById('postcode').value;
	var radius=document.getElementById('radius').value;
	var units=document.getElementById('units').value;
	var minprice=document.getElementById('minprice').value;
	var maxprice=document.getElementById('maxprice').value;
	var incpoa=document.getElementById('incpoa').value;
	var currency=document.getElementById('currency').value;
	var entityid=document.getElementById('entityid').value;
	var tradeonly=document.getElementById('tradeonly').value;
	var advsearch=document.getElementById('advsearch').value;
	var orderby=document.getElementById('orderby').value;
	var obmode=document.getElementById('obmode').value;
	var controlcsv=document.getElementById('controllist').value;
	var controlarray=controlcsv.split(",");
		
	var rfdstocknum=document.getElementById('rfdstocknum').value;

	//alert("ok");

	if(controlcsv !== "")
		{
		for(ix=0;ix<controlarray.length;ix++)
			{
			cvalue=document.getElementById(controlarray[ix]).value;
			if(cvalue != "Any")
				{
				paramstring=paramstring + sep + controlarray[ix] + "=" + cvalue;
				sep="+";	// only needed after first parameter.
				}
			}
		}
	
		
	var extras="start=" + start + "+length=" + length + "+orderby=" + orderby + "+obmode=" + obmode;
		
	if(postcode !== "") {extras=extras + "+postcode=" + postcode + "+radius=" + radius + "+units=" + units;}

	if(minprice !== "" || maxprice !== "")
		{
		if(minprice !== "") {extras=extras + "+minprice=" + minprice;}		
		if(maxprice !== "") {extras=extras + "+maxprice=" + maxprice;}	
	
		extras=extras + "+incpoa=" + incpoa;		
		extras=extras + "+currency=" + currency;		
		}
		
	else
		{
		if(incpoa == "no") {extras=extras + "+incpoa=no";}
		}	

	if(entityid != "0") {extras=extras + "+entityid=" + entityid;}

	if(rfdstocknum !== "") {extras=extras + "+rfdstocknum=" + rfdstocknum;}

	if(tradeonly == "yes") {extras=extras + "+tradeonly=yes";}

	if(advsearch == "yes") {extras=extras + "+advsearch=yes";}
		

	if(paramstring === "") {paramstring=extras;}
	else {paramstring=paramstring + "+" + extras;}		// Added to avoid zero length parameter string going to getFiltersDiv even though these aren't used.
		
	//alert(paramstring);

	paramstring=ciUrlEncodeEx(paramstring);
	
	var fullurl=url+categoryenc+"/"+paramstring;
	
	//alert(fullurl);
	
	xh5=GetXmlHttpObject();
	if (xh5===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh5.open("POST",fullurl,true);
	xh5.onreadystatechange=insertResultsDiv; 
 	xh5.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh5.send(null);
	} 


// -------------------------------------------------------------------------------

function getResetRfd()
	{
	var controlcsv=document.getElementById('controllist').value;
	var controlarray=controlcsv.split(",");
	
	if(controlcsv !== "")
		{
		for(ix=0;ix<controlarray.length;ix++)
			{
			document.getElementById(controlarray[ix]).value="Any";
			}
		}
		
	document.getElementById('currentcat').value="Guns";
	document.getElementById('postcode').value="";
	document.getElementById('radius').value="500";
	document.getElementById('units').value="mls";
	document.getElementById('minprice').value="";
	document.getElementById('maxprice').value="";
	//document.getElementById('rfdstocknum').value="";

	//getFiltersDiv();
	}

  // -------------------------------------------------------------------------------

function filterChanged()
	{
	document.getElementById('start').value="0";
	document.getElementById('length').value="10";
	
	getFiltersDiv(); 
	}
	
  // -------------------------------------------------------------------------------

function insertFiltersDiv()
	{ 
	
	if (xh4.readyState==4 || xh4.readyState=="complete")
 		{
 		//alert(xh4.responseText);
 		
 		document.getElementById('filterdiv').innerHTML=xh4.responseText;
 		
  		//document.getElementById('controllist').value=document.getElementById('retcontrollist').value;
  		//document.getElementById('numresults').value=document.getElementById('retnumresults').value;

  		//document.getElementById('orderby').value=document.getElementById('retorderby').value;
  		//document.getElementById('obmode').value=document.getElementById('retobmode').value;

  		
  		var numresults=document.getElementById('numresults').value;
  		
  		document.getElementById('totalspan').innerHTML="" + numresults;
  		document.getElementById('totalspanex').innerHTML="" + numresults;
  		
 		getResultsDiv();
 		
 		}
 	 }
 	

  // -------------------------------------------------------------------------------

function getFiltersDiv()
	{
	var ix;
	var sx;
	var paramslist;
	var controllist=[];		// Used to buildlist of control initial state if this is first call ie no filter controls.
	var param;
	var index=0;
	var paramstring="";
	
	
	var cvalue;
	var sep="";
	var url;
	var category;
	var categoryenc;
	var start;
	var length;
	var postcode;
	var radius;
	var units;
	var minprice;
	var maxprice;
	var incpoa;
	var currency;
	var entityid;
	var tradeonly;
	var advsearch;
	var orderby;
	var obmode;
	var obsetdefault;
	var controlcsv=document.getElementById('controllist').value;
	//alert(controlcsv);
	var controlarray=controlcsv.split(",");

	
	// If an RFD Search is under way, reset all the parameters otherwise it looks confusing.

	var rfdstocknum=document.getElementById('rfdstocknum').value;
	if(rfdstocknum !== "")
		{
		getResetRfd();
		} 	
		
	if(controlcsv != "")
		{
		for(ix=0;ix<controlarray.length;ix++)
			{
			//alert(controlarray[ix]);
			cvalue=document.getElementById(controlarray[ix]).value;
			if(cvalue != "Any")
				{
				paramstring=paramstring + sep + controlarray[ix] + "=" + cvalue;
				sep="+";	// only needed after first parameter.
				}
			}
		}
		
		
	// Now work only from DOM fields.

	url=document.getElementById('getfiltersdivurl').value;
	category=document.getElementById('currentcat').value;
	categoryenc=ciUrlEncodeEx(category);
	start=document.getElementById('start').value;
	length=document.getElementById('length').value;
	postcode=document.getElementById('postcode').value;
	radius=document.getElementById('radius').value;
	units=document.getElementById('units').value;
	minprice=document.getElementById('minprice').value;
	maxprice=document.getElementById('maxprice').value;
	incpoa=document.getElementById('incpoa').value;
	currency=document.getElementById('currency').value;
	entityid=document.getElementById('entityid').value;
	tradeonly=document.getElementById('tradeonly').value;
	advsearch=document.getElementById('advsearch').value;
	orderby=document.getElementById('orderby').value;
	obmode=document.getElementById('obmode').value;
	obsetdefault=document.getElementById('obsetdefault').value;	

	// Now create the extras string which MUST contain the four items start, length, orderby and obmode as a default set.

	extras="start=" + start + "+length=" + length + "+orderby=" + orderby + "+obmode=" + obmode;
		
	if(postcode !== "") {extras=extras + "+postcode=" + postcode + "+radius=" + radius + "+units=" + units;}

	if(minprice !== "" || maxprice !== "")
		{
		if(minprice !== "") {extras=extras + "+minprice=" + minprice;}		
		if(maxprice !== "") {extras=extras + "+maxprice=" + maxprice;}	
	
		extras=extras + "+incpoa=" + incpoa;		
		extras=extras + "+currency=" + currency;		
		}
		
	else
		{
		if(incpoa == "no") {extras=extras + "+incpoa=no";}
		}	


	if(entityid != "0") {extras=extras + "+entityid=" + entityid;}	

	if(obsetdefault == "yes")
		{
		extras=extras + "+obsetdefault=" + obsetdefault;	
		
		document.getElementById('obsetdefault').value="no";
		}
		
	if(rfdstocknum !== "") {extras=extras + "+rfdstocknum=" + rfdstocknum;}

	if(tradeonly == "yes") {extras=extras + "+tradeonly=yes";}

	if(advsearch == "yes") {extras=extras + "+advsearch=yes";}
		
	if(paramstring === "") {paramstring=extras;}
	else {paramstring=paramstring + "+" + extras;}		// Added to avoid zero length parameter string going to getFiltersDiv even though these aren't used.

	//alert(paramstring);
	
	paramstring=ciUrlEncodeEx(paramstring);
		
	var fullurl=url+categoryenc+"/"+paramstring;
	
	//alert(fullurl);
	
	xh4=GetXmlHttpObject();
	if (xh4===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh4.open("POST",fullurl,true);
	xh4.onreadystatechange=insertFiltersDiv; 
 	xh4.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh4.send(null);
	} 

  // -------------------------------------------------------------------------------

function insertAECFiltersDiv()
	{ 
	
	if (xh4a.readyState==4 || xh4a.readyState=="complete")
 		{
 		//alert(xh4a.responseText);
 		
 		document.getElementById('inputsdiv').innerHTML=xh4a.responseText;
 		}
 	 }
 	

  // -------------------------------------------------------------------------------

function getAECFiltersDiv()
	{
	var category="";
	var categoryenc="";
	var params="";
	var paramsenc="";
	
	var url="";
	var fullurl="";
	
	var controlcsv=document.getElementById('controllist').value;
	var controlarray=controlcsv.split(",");		

	var sep="";

	if(controlcsv != "")
		{
		for(ix=0;ix<controlarray.length;ix++)
			{
			cvalue=document.getElementById(controlarray[ix]).value;
			cstatus=document.getElementById(controlarray[ix] + "status").value;
			
			//alert(cvalue + " - " + cstatus); 
			
			if(cvalue != "")
				{
				params=params + sep + controlarray[ix] + "=" + cvalue + "|" + cstatus;
				sep="+";	// only needed after first parameter.
				}
			}
		}
		
	//alert(params);
		
	// Now work only from DOM fields.

	url=document.getElementById('getaecfiltersdivurl').value;
	category=document.getElementById('currentcat').value;
	categoryenc=ciUrlEncodeEx(category);

	//alert(params);
	
	paramsenc=ciUrlEncodeEx(params);
		
	fullurl=url+categoryenc+"/"+paramsenc;
	
	//alert(fullurl);
	
	xh4a=GetXmlHttpObject();
	if (xh4a===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh4a.open("POST",fullurl,true);
	xh4a.onreadystatechange=insertAECFiltersDiv; 
 	xh4a.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh4a.send(null);
	} 


// -------------------------------------------------------------------------------

function getReset()
	{
	var controlcsv=document.getElementById('controllist').value;
	var controlarray=controlcsv.split(",");
	
//	try
//		{
		if(controlcsv !== "")
			{
			for(ix=0;ix<controlarray.length;ix++)
				{
				document.getElementById(controlarray[ix]).value="Any";
				}
			}
//		}
	
//	catch (e)
	
//		{
//		alert("Oops");
		// Do Nowt
//		}
		
	document.getElementById('start').value=0;
	document.getElementById('radius').value="500";
	document.getElementById('units').value="mls";
	document.getElementById('minprice').value="";
	document.getElementById('maxprice').value="";
	document.getElementById('incpoa').value="yes";
	document.getElementById('rfdstocknum').value="";

	document.getElementById('obsetdefault').value="yes";
	
	getFiltersDiv();
	}

// -------------------------------------------------------------------------------

function getWantedReset()
	{
	var numitems=document.getElementById('numitems').value;

	if(numitems > 0)
		{
		//alert(numitems + " wanted items");

		var controlcsv=document.getElementById('controllist').value;
		var controlarray=controlcsv.split(",");
	
		if(controlcsv !== "")
			{
			for(ix=0;ix<controlarray.length;ix++)
				{
				document.getElementById(controlarray[ix]).value="Any";
				}
			}
		
		document.getElementById('postcode').value="";
		document.getElementById('radius').value="500";
		document.getElementById('units').value="mls";
		document.getElementById('minprice').value="";
		document.getElementById('maxprice').value="";
		document.getElementById('incpoa').value="yes";
		document.getElementById('rfdstocknum').value="";

		document.getElementById('obsetdefault').value="yes";
	
		getFiltersDiv();
		}
	else
		{
		//alert("There are no wanted items listed");
		}
	}

// -------------------------------------------------------------------------------

function testXmlResults() 
	{ 
	if (xh13.readyState==4 || xh13.readyState=="complete")
 		{
		alert(xh13.responseText);
		
		//document.getElementById('fixcatcount').innerHTML="Completed";
 		}
 	 }
 	
function testXml()
	{

	//document.getElementById('fixcatcount').innerHTML="Processing ... Please Wait";	

	//alert(url);
	
	//params="<GunSeeker><Identity><Id>12345</Id><Pwd>letmein</Pwd></Identity><Update><IdKey>F00104</IdKey><Status>Active</Status><Version>1.0</Version><StockNo>F00104</StockNo><SerialNo>G393561</SerialNo><AskingPrice>67500</AskingPrice><PriceIsPOA>True</PriceIsPOA><Category>Guns/Air Pistol</Category><GunType>Firearm</GunType><IsFirearm>True</IsFirearm><Calibre>.243</Calibre><Make>SAVAGE ARMS</Make><Model>MODEL 11</Model><Action>BOLT ACTION RH</Action><Orientation></Orientation><Style></Style><Chamber></Chamber><BarrelLength></BarrelLength><Choke1></Choke1><Choke2></Choke2><Magazine>DETACHABLE</Magazine><Stock>WOOD</Stock><ConditionId>NEW</ConditionId><Description>SAVAGE ARMS MODEL 11 .243 BOLT ACTION RH 22</Description></Update> </GunSeeker>";
	
	params="<GunSeeker><Identity><Id>12345</Id><Pwd>letmein</Pwd></Identity><StatusUpdate><IdKey>F00108</IdKey><Status>Inactive</Status><Version>1.0</Version><StockNo>F00108</StockNo><SerialNo>755939</SerialNo><AskingPrice>112000</AskingPrice><PriceIsPOA>True</PriceIsPOA></StatusUpdate></GunSeeker>";
	
	xh13=GetXmlHttpObject();
	if (xh13===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh13.open("POST","http://localhost/gunseeker293/index.php/soaptest/testxml",true);
	xh13.onreadystatechange=testXmlResults; 
 	xh13.setRequestHeader("Content-type", "text/xml");
	xh13.setRequestHeader("Content-length", params.length);
	xh13.setRequestHeader("Connection", "close");
	xh13.send(params);
	} 


 	
  // -------------------------------------------------------------------------------

function addBannerSubmit()
	{
	if(document.getElementById('bannername').value==="")
		{
		alert("Banner Name Required");
		return;
		}
		
	if(document.getElementById('pix').value==="")
		{
		alert("Please browse for a media file");
		return;
		}
		
	document.myform.submitfield.value='Submit';
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function bannerApprove(id)
	{
	document.myform.submitfield.value='Approve';
	document.myform.idfield.value=id;
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function toggleBannerActive(id)
	{
	document.getElementById('voffset').value=f_scrollTop(); 
	document.myform.submitfield.value='toggleBannerActive';
	document.myform.idfield.value=id;
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function toggleBannerSuspended(id)
	{
	document.getElementById('voffset').value=f_scrollTop(); 
	document.myform.submitfield.value='toggleBannerSuspended';
	document.myform.idfield.value=id;
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function configureBanner(id)
	{
	document.myform.submitfield.value='configureBanner';
	document.myform.idfield.value=id;
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function getRefine(category)
	{
	document.getElementById('cats').value=category;
	document.getElementById('currentcat').value=category;
	getReset();
	}
	
  // -------------------------------------------------------------------------------

function createArticleSubmit()
	{
	if(document.getElementById('articletitle').value==="")
		{
		alert("Title Required");
		return;
		}
		
	document.myform.submitfield.value='Submit';
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function toggleArticlePublished(id)
	{
	document.getElementById('voffset').value=f_scrollTop(); 
	document.myform.submitfield.value='toggleArticlePublished';
	document.myform.idfield.value=id;
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function editArticle(id)
	{
	//alert(id);
	document.myform.submitfield.value='Edit';
	document.myform.idfield.value=id;
	document.myform.submit();	
	}
	
  // -------------------------------------------------------------------------------

function xh15return() 
	{ 
	if (xh15.readyState==4 || xh15.readyState=="complete")
 		{
 		//alert(xh15.responseText);
 		document.getElementById('result').innerHTML=xh15.responseText; 
 		}
 	 }
 	
function testSoap()
	{
	//var url="http://localhost/test.php";
	var url="http://localhost/gunseeker411dev1/index.php/rfd/service";
	//var url="http://www.gunseeker.co.uk/tolaunch/test.php";
	
	alert("Testing SOAP via xmlHTTP - " + url);
	
	xh15=GetXmlHttpObject();
	if (xh15===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh15.open("POST",url,true);
	xh15.onreadystatechange=xh15return; 
 	xh15.setRequestHeader('Content-Type','text/xml;charset=UTF-8');
 	//xh15.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh15.send('Testing<?xml version="1.0"?><soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"><soap:Body><m:GetPriceResponse xmlns:m="http://www.w3schools.com/prices"><m:Price>1.90</m:Price></m:GetPriceResponse></soap:Body></soap:Envelope>');

	}


  // -------------------------------------------------------------------------------

function xh16return() 
	{ 
	if (xh16.readyState==4 || xh16.readyState=="complete")
 		{
 		alert(xh16.responseText);
 		}
 	 }
 	
   // -------------------------------------------------------------------------------
	
function catAddSelChanged()
	{
	document.getElementById("newcategory").value=document.getElementById("currentcats").value;
	}
	
function copyAcc()
	{
	selectValueSet('acctitle',document.getElementById('title').value);

	document.getElementById('accfirstname').value=document.getElementById('firstname').value;
	document.getElementById('acclastname').value=document.getElementById('lastname').value;
	document.getElementById('accphone').value=document.getElementById('phone').value;
	document.getElementById('accmobile').value=document.getElementById('mobile').value;
	document.getElementById('accfax').value=document.getElementById('fax').value;
	document.getElementById('accemail').value=document.getElementById('email').value;
	}
	
	
function selectValueSet(selectName, value)
	{
	selectObject=document.getElementById(selectName);
  	for(index = 0;index < selectObject.length; index++)
		{
   		if(selectObject[index].value == value) selectObject.selectedIndex = index;
   		}
	}

	
function alertMessage(message)
	{
	alert(message);
	}
	
function showImageLarge(number)
	{
	var pic1=document.getElementById('picdiv1').innerHTML;
	var pic2=document.getElementById('picdiv'+number).innerHTML;
		
	// Add _thumb to pic1 and remove it from pic2
	
	var pos=pic1.lastIndexOf(".");
	
	pic1=pic1.slice(0,pos) + "_thumb" + pic1.slice(pos);
	pic2=pic2.replace("_thumb","");
		
	document.getElementById('picdiv1').innerHTML=pic2;		
	document.getElementById('picdiv'+number).innerHTML=pic1;		
	}
	
	
 // -------------------------------------------------------------------------------

 // Sample POST Code. Must add the Header Request and use the param string as usual.

 // var objHTTP, strResult;
 // objHTTP = new ActiveXObject('Microsoft.XMLHTTP');
 // objHTTP.open('POST',"OtherPage.asp",false);
 // objHTTP.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

 // objHTTP.send("id=1&user="+txtUser.value+"&password="+txtPassword.value);

 // strResult=objHTTP.responseText;

  // -------------------------------------------------------------------------------

function insertAjax() 
	{ 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
 		{ 
 		document.getElementById('itemsdiv').innerHTML=xmlHttp.responseText; 
 		}
 	 }
 	
function ajaxTest()
	{
	xmlHttp=GetXmlHttpObject();
	if (xmlHttp===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	var url='http://localhost/gunseeker50/index.php/develop/ajaxresponse/';
	xmlHttp.open("POST",url,true);
	xmlHttp.onreadystatechange=insertAjax; 
 	xmlHttp.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xmlHttp.send(null);
	} 


   // -------------------------------------------------------------------------------

function fixcatcountResults() 
	{ 
	if (xh12.readyState==4 || xh12.readyState=="complete")
 		{
		//alert(xh12.responseText);
		
		document.getElementById('fixcatcount').innerHTML="Completed";
 		}
 	 }
 	
function fixCatCount(url)
	{

	document.getElementById('fixcatcount').innerHTML="Processing ... Please Wait";	

	//alert(url);
	
	xh12=GetXmlHttpObject();
	if (xh12===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh12.open("POST",url,true);
	xh12.onreadystatechange=fixcatcountResults; 
 	xh12.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh12.send(null);
	} 


 	
   // -------------------------------------------------------------------------------

function setsoldResults() 
	{ 
	if (xh11.readyState==4 || xh11.readyState=="complete")
 		{
		//alert(xh11.responseText);
 		getResultsDiv(); 
 		}
 	 }
 	
function setSold(url,itemref)
	{
	var fullurl=url + itemref;
	
	//alert(fullurl);
	
	xh11=GetXmlHttpObject();
	if (xh11===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh11.open("POST",fullurl,true);
	xh11.onreadystatechange=setsoldResults; 
 	xh11.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh11.send(null);
	} 


 	
	
   // -------------------------------------------------------------------------------

function deleteResults() 
	{ 
	if (xh10.readyState==4 || xh10.readyState=="complete")
 		{
 		alert("Item Deleted");
 		getFiltersDiv(); 
 		}
 	 }
 	
function deleteItem(url,itemref)
	{
	var answer=confirm("Press OK to delete item");
	
	if(answer===false) {return;}
	
	var fullurl=url + itemref;
	
	//alert(fullurl);
	
	xh10=GetXmlHttpObject();
	if (xh10===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh10.open("POST",fullurl,true);
	xh10.onreadystatechange=deleteResults; 
 	xh10.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh10.send(null);
	} 


 	
	
 // -------------------------------------------------------------------------------

function sortCol(column)
	{
	if(column=="none") return;
	
	//alert(column + " sort under development");
	if(document.getElementById('obmode').value == "asc")
		{
		document.getElementById('obmode').value = "desc";
		}
	else
		{
		document.getElementById('obmode').value = "asc";
		}
		
	if(document.getElementById('orderby').value != column)
		{
		document.getElementById('orderby').value = column;
		document.getElementById('obmode').value = "asc";
		}
		
	getFiltersDiv();
	}
	
  // -------------------------------------------------------------------------------

function startbannersoffset(baseurl,type,params)
	{
	if(document.getElementById('sysmode').value == "lite") return;

	getbannersurl=baseurl + "index.php/ajax/getbanners/" + type + "/" + params;

	xh14=GetXmlHttpObject();
	if (xh14===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	offset=document.getElementById('voffset').value; 
	window.scroll(0,offset);
  				
	setTimeout("getbanners()",5000);
	}
	

  // -------------------------------------------------------------------------------

function startbanners(baseurl,type,params)
	{
	if(document.getElementById('sysmode').value == "lite") return;

	getbannersurl=baseurl + "index.php/ajax/getbanners/" + type + "/" + params;

	if(type=="page" && params=="home")
		{
		var tmpcookie = new Date();
 		chkcookie = (tmpcookie.getTime() + '');
 		document.cookie = "chkcookie=" + chkcookie + "; path=/";
 		if (document.cookie.indexOf(chkcookie,0) < 0)
 			{
			alert("Please enable cookies before registering with this site");
 			}
 		}
	
	xh14=GetXmlHttpObject();
	if (xh14===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	setTimeout("getbanners()",5000);
	}
	

 // -------------------------------------------------------------------------------

 
function getbanners()
	{
	//alert("calling - " + getbannersurl);
	
	xh14.open("POST",getbannersurl,true);
	xh14.onreadystatechange=function() 
	{
	if (xh14.readyState==4 || xh14.readyState=="complete")
 		{
		var ix;
		var bannerposition;
		var bannerstring;
 		
 		var response=xh14.responseText;
 		
 		//alert("received - " + response);
 		
 		var adarray=response.split("~");
 		
 		var index=0;
 		
 		for(ix=0;ix<100;ix++)
 			{
 			bannerposition=adarray[index];
 			if(bannerposition == "end") break;
 			
 			bannerstring=adarray[index+1];
 			
 			//alert(bannerposition + " - " + bannerstring);
 			
			document.getElementById("ban-" + bannerposition).innerHTML=bannerstring; 
 			
 			index=index+2;
 			}
		
 		//alert("index = " + index);
		setTimeout("getbanners()",10000);
		}
	}

 	xh14.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh14.send(null);
	}

  // -------------------------------------------------------------------------------

 function setRootCat(rootcat,entityid)
	{
	var url=document.getElementById('setrootcaturl').value;

	var fullurl=url + ciUrlEncodeEx(rootcat) + "/" + entityid;
	
	//alert(rootcat);
	//return;
	
	//alert(fullurl);
	
	xh22=GetXmlHttpObject();
	if (xh22===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh22.open("POST",fullurl,true);
	xh22.onreadystatechange=function()
	{ 
	if (xh22.readyState==4 || xh22.readyState=="complete")
 		{
 		//alert(xmlHttp.responseText);
 		
 		document.getElementById('rootcatdiv').innerHTML=xh22.responseText;
 		
 		setCat("first",entityid);
 		//getReset();
 		}
 	 }
	 
 	xh22.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh22.send(null);
	}

  // -------------------------------------------------------------------------------

function setCat(cat,entityid)
	{
	var url=document.getElementById('setcaturl').value;
	var rootcat=document.getElementById('currentrootcat').value;
	
	//alert(rootcat);
	
	var fullurl=url + ciUrlEncodeEx(rootcat) + "/" + ciUrlEncodeEx(cat) + "/" + entityid;
	
	//alert(fullurl);
	
	xh24=GetXmlHttpObject();
	if (xh24===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh24.open("POST",fullurl,true);
	xh24.onreadystatechange=function()
	{ 
	if (xh24.readyState==4 || xh24.readyState=="complete")
 		{
 		//alert(xh24.responseText);
 		
 		document.getElementById('catsdiv').innerHTML=xh24.responseText;
 		
 		getReset();
 		}
 	 }
	
 	xh24.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh24.send(null);
	}

  // -------------------------------------------------------------------------------

function insertResults() 
	{ 
	if (xh3.readyState==4 || xh3.readyState=="complete")
 		{ 
 		document.getElementById('resultsdiv').innerHTML=xh3.responseText;
 		}
 	 }
 	
function getResults(url)
	{
	xh3=GetXmlHttpObject();
	if (xh3===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh3.open("POST",url,true);
	xh3.onreadystatechange=insertResults; 
 	xh3.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh3.send(null);
	} 

// -------------------------------------------------------------------------------

function getPrevious()
	{
	var start=1 * (document.getElementById('start').value);
	start=start-10;
	if(start < 0)
		{
		start = 0;
		return;
		}
		
	document.getElementById('start').value=start.toString();	
	getResultsDiv();
	}

// -------------------------------------------------------------------------------

function getNext()
	{
	var total=1 * (document.getElementById('numresults').value);
	var start=1 * (document.getElementById('start').value);
	var oldstart=start;
	
	//alert(start.toString());
	//alert(total.toString());
	
	start=start+10;
	if(start > total)
		{
		start=oldstart;
		return;
		}
		
	document.getElementById('start').value=start.toString();	
	getResultsDiv();
	}

// -------------------------------------------------------------------------------

var gitemref;

function insertDetails() 
	{ 
	if (xh6.readyState==4 || xh6.readyState=="complete")
 		{
 		document.getElementById(gitemref).innerHTML=xh6.responseText;
		}
 	 }
 	
function getDetails(url,itemref)
	{
	var ref;
	var numvisible=1 * (document.getElementById('numvisible').value);
	
	for(ix=0;ix<numvisible;ix++)
		{
		ref=document.getElementById('resultdiv'+ix).value; 
 		document.getElementById(ref).innerHTML=""; 
		}
		
	if(gitemref == itemref)
		{
		gitemref='';
		document.getElementById('sd'+ itemref).innerHTML="Show Details"; 
		
		return;		// Causes the open one to close if clicked.
		}
		
	gitemref=itemref;
	
	document.getElementById('sd'+ itemref).innerHTML="Hide Details";
	
	xh6=GetXmlHttpObject();
	if (xh6===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh6.open("POST",url+itemref,true);
	xh6.onreadystatechange=insertDetails; 
 	xh6.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh6.send(null);
	} 

// -------------------------------------------------------------------------------

function gotoDetailsPage(url,itemref,cat,params)
	{
	fullurl=url+itemref+"/"+cat+"/"+params;
	
	//alert(fullurl);
	
	window.location=fullurl;
	} 

// -------------------------------------------------------------------------------

var gitemrefw;

function insertDetailsw() 
	{ 
	if (xh66.readyState==4 || xh66.readyState=="complete")
 		{ 
 		document.getElementById(gitemrefw).innerHTML=xh66.responseText;
		}
 	 }
 	
function getDetailsw(url,itemref)
	{
	var ref;
	var numvisible=1 * (document.getElementById('numvisible').value);
	
	for(ix=0;ix<numvisible;ix++)
		{
		ref=document.getElementById('resultdiv'+ix).value; 
 		document.getElementById(ref).innerHTML=""; 
		}
		
	if(gitemrefw == itemref)
		{
		gitemrefw='';
		document.getElementById('sd'+ itemref).innerHTML="Show Details"; 
		
		return;		// Causes the open one to close if clicked.
		}
		
	gitemrefw=itemref;
	
	document.getElementById('sd'+ itemref).innerHTML="Hide Details";
	
	xh66=GetXmlHttpObject();
	if (xh66===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh66.open("POST",url+itemref,true);
	xh66.onreadystatechange=insertDetailsw; 
 	xh66.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh66.send(null);
	} 


  // -------------------------------------------------------------------------------

function editDetails() 
	{ 
	if (xh7.readyState==4 || xh7.readyState=="complete")
 		{
 		document.getElementById('detailsdiv').innerHTML=xh7.responseText; 
		}
 	 }
 	
function getEditDetails(url,itemid)
	{
	document.forms[0].itemreffield.value=itemid;
	document.getElementById('mybtn').style.display = 'inline'; 	
	document.getElementById('mybtn2').style.display = 'inline'; 	
	
	xh7=GetXmlHttpObject();
	if (xh7===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh7.open("POST",url,true);
	xh7.onreadystatechange=editDetails; 
 	xh7.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh7.send(null);
	} 


  // -------------------------------------------------------------------------------

function deleteDetails() 
	{ 
	if (xh8.readyState==4 || xh8.readyState=="complete")
 		{
 		document.getElementById('detailsdiv').innerHTML=xh8.responseText; 
 		}
 	 }
 	
function getDeleteDetails(url,itemid)
	{
	document.forms[0].itemreffield.value=itemid;
	
	document.getElementById('mybtn').style.display = 'inline';

	xh8=GetXmlHttpObject();
	if (xh8===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh8.open("POST",url,true);
	xh8.onreadystatechange=deleteDetails; 
 	xh8.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh8.send(null);
	} 


// -------------------------------------------------------------------------------

function dopipe2fs(string)
	{
	var temp=string;
	temp=temp.replace("|","/");
	return temp;
	}
	
 // -------------------------------------------------------------------------------

function pipe2fs(string)
	{
	var tempstring=string;
	var resultstring='';
	var ix=0;
	
	for(ix=0;ix<10;ix++)
		{
		resultstring=dopipe2fs(tempstring);		
		if(resultstring == tempstring) {break;}
		tempstring=resultstring;
		}
		
	return resultstring;
	}

  // -------------------------------------------------------------------------------

function doUrlEncode(string)
	{
	var temp=string;
	
	temp=temp.replace("&",'~ampzz~');
	temp=temp.replace(".",'~dotzz~');
	temp=temp.replace(",",'~commazz~');
	temp=temp.replace(" ",'~spzz~');
	temp=temp.replace("(",'~lbzz~');
	temp=temp.replace(")",'~rbzz~');
	temp=temp.replace("[",'~lsbzz~');
	temp=temp.replace("]",'~rsbzz~');
	temp=temp.replace("-",'~dashzz~');
	temp=temp.replace("%",'~pctzz~');
	temp=temp.replace(":",'~clnzz~');
	temp=temp.replace(";",'~sclnzz~');
	temp=temp.replace("/",'~fszz~');
	temp=temp.replace("\\",'~bszz~');
	temp=temp.replace("\"",'~dqzz~');
	temp=temp.replace("\'",'~sqzz~');
	temp=temp.replace("!",'~exzz~');
	temp=temp.replace("@",'~atzz~');
	
	return temp;
	
	}

 // -------------------------------------------------------------------------------

function ciUrlEncode(string)
	{
	var tempstring=string;
	var resultstring='';
	var ix=0;
	
	for(ix=0;ix<10;ix++)
		{
		resultstring=doUrlEncode(tempstring);		
		if(resultstring == tempstring) {break;}
		tempstring=resultstring;
		}
		
	return resultstring;
	}

  // -------------------------------------------------------------------------------

function doHtmlEntities(string)
	{
	var temp=string;
	
	temp=temp.replace("\"",'&quot;');
	
	return temp;
	
	}

 // -------------------------------------------------------------------------------

function ciHtmlEntities(string)
	{
	var tempstring=string;
	var resultstring='';
	var ix=0;
	
	for(ix=0;ix<10;ix++)
		{
		resultstring=doHtmlEntities(tempstring);		
		if(resultstring == tempstring) {break;}
		tempstring=resultstring;
		}
		
	return resultstring;
	}

  // -------------------------------------------------------------------------------

function getChildSelectsx(url,valuenames)
	{
	alert('Hello World');
	}
	
  // -------------------------------------------------------------------------------

function childSelects() 
	{ 
	if (xh9.readyState==4 || xh9.readyState=="complete")
 		{
 		var response=xh9.responseText;
 		
  		//alert('Response = ' + response);
  	
		var responsearray=response.split('aaaaaa');
 		
 		var ix=0;
 		for(ix=0;ix < responsearray.length;ix++)
 			{
 			//alert('Response item ' + ix + ' = ' + responsearray[ix]);
 			
 			var itemarray=responsearray[ix].split('bbbbbb');			// Split into the span id and the innerHTML content
 			
 			//alert('Control = ' + itemarray[0]);
 			//alert('Value = ' + itemarray[1]);
 			
 			
  			document.getElementById(itemarray[0]).innerHTML=itemarray[1]; 
 			}
 			
		}
 	 }
 	
function getChildSelects(url,valuenames)
	{
	// Replace the vvvvvv placeholder in url with the value of control formed by parentname ie Manufacturersel
	
	//alert('url = ' + url);
	//alert('valuenames = ' + valuenames);
	
	var valuesarray=valuenames.split('|');
	
	var valuesstring='';
	
	for(var ix=0;ix < valuesarray.length;ix++)
 		{
 		//alert(valuesarray[ix]);
		valuesstring=valuesstring + document.getElementById(valuesarray[ix]).value + '|'; 
		}
		
	//alert('valuesstring = ' + valuesstring);
		
	if(valuesstring=="|") valuesstring = "resetrequest|"; 
	if(valuesstring=="Not in list - Let me type|")
		{
		// Reset the control to blank
		
		document.getElementById(valuesarray[0]).value="";		// Will always be zero index for choosing Let Me Type		
		valuesstring = "letmetype|"; 
		}
		
	valuesstring=ciUrlEncode(valuesstring);		// This must be encoded like the php encoded the javascript call embedded in the control so that the ajax processor can work.
	//alert('ciUrlEncode valuesstring = ' + valuesstring);
	valuesstring=pipe2fs(valuesstring);
	//alert('pipe2fs valuesstring = ' + valuesstring);
		
	var url2=url.replace('vvvvvv',valuesstring);

	//alert('Url sent = ' + url2);

	xh9=GetXmlHttpObject();
	if (xh9===null)
  		{
  		alert ("Browser does not support HTTP Request");
  		return;
  		}
  		
	xh9.open("POST",url2,true);
	xh9.onreadystatechange=childSelects;
 	xh9.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	xh9.send(null);
	} 


// -------------------------------------------------------------------------------------------------------
	
	
var fActiveMenu  = false;
var oOverMenu = false;

function mouseSelect(e)
{
	if (fActiveMenu)
	{
		if (oOverMenu === false)
		{
			oOverMenu = false;
			document.getElementById(fActiveMenu).style.display = "none";
			fActiveMenu = false;
			return false;
		}
		return false;
	}
	return true;
}

function  menuActivate(idEdit, idMenu, idSel)
{
	if (fActiveMenu) {return mouseSelect(0);}

	oMenu = document.getElementById(idMenu);
	oEdit = document.getElementById(idEdit);
	nTop = oEdit.offsetTop + oEdit.offsetHeight;
	nLeft = oEdit.offsetLeft;
	while (oEdit.offsetParent != document.body)
	{
		oEdit = oEdit.offsetParent;
		nTop += oEdit.offsetTop;
		nLeft += oEdit.offsetLeft;
	}
	oMenu.style.left = nLeft;
	oMenu.style.top = nTop;
	oMenu.style.display = "inline";
	fActiveMenu = idMenu;
	document.getElementById(idSel).focus();
	return false;
}


function textSetEx(idEdit, value)
{
//alert(value);
	if(value == "$$edit")
		{
		document.getElementById(idEdit).value = "";
		//document.getElementById(idEdit + "sel").selected = '';
		document.getElementById(idEdit).style.display = 'inline';
		document.getElementById(idEdit + "but").style.display = 'inline';
		document.getElementById(idEdit + "sel").style.display = 'none';
		document.getElementById(idEdit).focus();
		
		document.getElementById(idEdit + "sel").selectedIndex = 0;
		document.getElementById(idEdit + "status").value = "edit";
		}
	else
		{
		if(value == "$$anything1" || value == "$$anything2")
			{
			value="";
			}
		
		value=ciHtmlEntities(value);
					
		document.getElementById(idEdit).value = value;	
		document.getElementById(idEdit + "status").value = "select";
		
		getAECFiltersDiv();
		}
}


function showList(id)
{
	document.getElementById(id).value = '';
	document.getElementById(id).style.display = 'none';
	document.getElementById(id + "but").style.display = 'none';
	document.getElementById(id + "sel").style.display = 'block';
	//oOverMenu = false;
	//mouseSelect(0);
	document.getElementById(id + "sel").focus();
	document.getElementById(id + "sel").selectedIndex=0;
	//document.getElementById(id + "sel").onchange();	
}

function textSet(idEdit, text)
{
	document.getElementById(idEdit).value = text;
	oOverMenu = false;
	mouseSelect(0);
	document.getElementById(idEdit).focus();
}

function comboKey(idEdit, idSel)
{
	if (window.event.keyCode == 13 || window.event.keyCode == 32)
		{textSet(idEdit,idSel.value);}
	else if (window.event.keyCode == 27)
	{
		mouseSelect(0);
		document.getElementById(idEdit).focus();
	}
}







function htmlentities (string, quote_style) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: nobbler
    // +    tweaked by: Jack
    // +   bugfixed by: Onno Marsman
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +    bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Ratheous
    // -    depends on: get_html_translation_table
    // *     example 1: htmlentities('Kevin & van Zonneveld');
    // *     returns 1: 'Kevin &amp; van Zonneveld'
    // *     example 2: htmlentities("foo'bar","ENT_QUOTES");
    // *     returns 2: 'foo&#039;bar'

    var hash_map = {}, symbol = '', tmp_str = '', entity = '';
    tmp_str = string.toString();
    
    if (false === (hash_map = get_html_translation_table('HTML_ENTITIES', quote_style))) {
        return false;
    }
    hash_map["'"] = '&#039;';
    for (symbol in hash_map) {
        entity = hash_map[symbol];
        tmp_str = tmp_str.split(symbol).join(entity);
    }
    
    return tmp_str;
}




function get_html_translation_table (table, quote_style) {
    // http://kevin.vanzonneveld.net
    // +   original by: Philip Peterson
    // +    revised by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: noname
    // +   bugfixed by: Alex
    // +   bugfixed by: Marco
    // +   bugfixed by: madipta
    // +   improved by: KELAN
    // +   improved by: Brett Zamir (http://brett-zamir.me)
    // +   bugfixed by: Brett Zamir (http://brett-zamir.me)
    // +      input by: Frank Forte
    // +   bugfixed by: T.Wild
    // +      input by: Ratheous
    // %          note: It has been decided that we're not going to add global
    // %          note: dependencies to php.js, meaning the constants are not
    // %          note: real constants, but strings instead. Integers are also supported if someone
    // %          note: chooses to create the constants themselves.
    // *     example 1: get_html_translation_table('HTML_SPECIALCHARS');
    // *     returns 1: {'"': '&quot;', '&': '&amp;', '<': '&lt;', '>': '&gt;'}
    
    var entities = {}, hash_map = {}, decimal = 0, symbol = '';
    var constMappingTable = {}, constMappingQuoteStyle = {};
    var useTable = {}, useQuoteStyle = {};
    
    // Translate arguments
    constMappingTable[0]      = 'HTML_SPECIALCHARS';
    constMappingTable[1]      = 'HTML_ENTITIES';
    constMappingQuoteStyle[0] = 'ENT_NOQUOTES';
    constMappingQuoteStyle[2] = 'ENT_COMPAT';
    constMappingQuoteStyle[3] = 'ENT_QUOTES';

    useTable       = !isNaN(table) ? constMappingTable[table] : table ? table.toUpperCase() : 'HTML_SPECIALCHARS';
    useQuoteStyle = !isNaN(quote_style) ? constMappingQuoteStyle[quote_style] : quote_style ? quote_style.toUpperCase() : 'ENT_COMPAT';

    if (useTable !== 'HTML_SPECIALCHARS' && useTable !== 'HTML_ENTITIES') {
        throw new Error("Table: "+useTable+' not supported');
        // return false;
    }

    entities['38'] = '&amp;';
    if (useTable === 'HTML_ENTITIES') {
        entities['160'] = '&nbsp;';
        entities['161'] = '&iexcl;';
        entities['162'] = '&cent;';
        entities['163'] = '&pound;';
        entities['164'] = '&curren;';
        entities['165'] = '&yen;';
        entities['166'] = '&brvbar;';
        entities['167'] = '&sect;';
        entities['168'] = '&uml;';
        entities['169'] = '&copy;';
        entities['170'] = '&ordf;';
        entities['171'] = '&laquo;';
        entities['172'] = '&not;';
        entities['173'] = '&shy;';
        entities['174'] = '&reg;';
        entities['175'] = '&macr;';
        entities['176'] = '&deg;';
        entities['177'] = '&plusmn;';
        entities['178'] = '&sup2;';
        entities['179'] = '&sup3;';
        entities['180'] = '&acute;';
        entities['181'] = '&micro;';
        entities['182'] = '&para;';
        entities['183'] = '&middot;';
        entities['184'] = '&cedil;';
        entities['185'] = '&sup1;';
        entities['186'] = '&ordm;';
        entities['187'] = '&raquo;';
        entities['188'] = '&frac14;';
        entities['189'] = '&frac12;';
        entities['190'] = '&frac34;';
        entities['191'] = '&iquest;';
        entities['192'] = '&Agrave;';
        entities['193'] = '&Aacute;';
        entities['194'] = '&Acirc;';
        entities['195'] = '&Atilde;';
        entities['196'] = '&Auml;';
        entities['197'] = '&Aring;';
        entities['198'] = '&AElig;';
        entities['199'] = '&Ccedil;';
        entities['200'] = '&Egrave;';
        entities['201'] = '&Eacute;';
        entities['202'] = '&Ecirc;';
        entities['203'] = '&Euml;';
        entities['204'] = '&Igrave;';
        entities['205'] = '&Iacute;';
        entities['206'] = '&Icirc;';
        entities['207'] = '&Iuml;';
        entities['208'] = '&ETH;';
        entities['209'] = '&Ntilde;';
        entities['210'] = '&Ograve;';
        entities['211'] = '&Oacute;';
        entities['212'] = '&Ocirc;';
        entities['213'] = '&Otilde;';
        entities['214'] = '&Ouml;';
        entities['215'] = '&times;';
        entities['216'] = '&Oslash;';
        entities['217'] = '&Ugrave;';
        entities['218'] = '&Uacute;';
        entities['219'] = '&Ucirc;';
        entities['220'] = '&Uuml;';
        entities['221'] = '&Yacute;';
        entities['222'] = '&THORN;';
        entities['223'] = '&szlig;';
        entities['224'] = '&agrave;';
        entities['225'] = '&aacute;';
        entities['226'] = '&acirc;';
        entities['227'] = '&atilde;';
        entities['228'] = '&auml;';
        entities['229'] = '&aring;';
        entities['230'] = '&aelig;';
        entities['231'] = '&ccedil;';
        entities['232'] = '&egrave;';
        entities['233'] = '&eacute;';
        entities['234'] = '&ecirc;';
        entities['235'] = '&euml;';
        entities['236'] = '&igrave;';
        entities['237'] = '&iacute;';
        entities['238'] = '&icirc;';
        entities['239'] = '&iuml;';
        entities['240'] = '&eth;';
        entities['241'] = '&ntilde;';
        entities['242'] = '&ograve;';
        entities['243'] = '&oacute;';
        entities['244'] = '&ocirc;';
        entities['245'] = '&otilde;';
        entities['246'] = '&ouml;';
        entities['247'] = '&divide;';
        entities['248'] = '&oslash;';
        entities['249'] = '&ugrave;';
        entities['250'] = '&uacute;';
        entities['251'] = '&ucirc;';
        entities['252'] = '&uuml;';
        entities['253'] = '&yacute;';
        entities['254'] = '&thorn;';
        entities['255'] = '&yuml;';
    }

    if (useQuoteStyle !== 'ENT_NOQUOTES') {
        entities['34'] = '&quot;';
    }
    if (useQuoteStyle === 'ENT_QUOTES') {
        entities['39'] = '&#39;';
    }
    entities['60'] = '&lt;';
    entities['62'] = '&gt;';


    // ascii decimals to real symbols
    for (decimal in entities) {
        symbol = String.fromCharCode(decimal);
        hash_map[symbol] = entities[decimal];
    }
    
    return hash_map;
}




document.onmousedown  = mouseSelect;
