var oDOC = new xh();

var isReady = new Boolean(false);

var aInfoPanels;
var iResultsPanel = 2;
var sResultsPanel = new String('');
var loc;

function js__dir__search()
{
	if(isReady==false)
	{
		MakeInfoPanelsReady();

		isReady=true;
	}

	loc = gv('directoryresultsearch');

	js__dir__search__prep();
}

function js__dir__search__prep()
{
	showInfoPanel('dvLoading');
	window.setTimeout('js__dir__search__start()',500);
}

function js__dir__search__start()
{
	var src = new String('/gyms/search/xmlrelay2.aspx?dn={0}&ph={1}&mr=15');

	var d = gv('dirname');

	var finalsrc = new String(src.format(escape(d),escape(loc)));

	//alert(finalsrc);

	loadXML(finalsrc);

	parseXML()
}

/****** XML FUNCTIONS ******/

function parseXML()
{
	var oROOT = getNode(oXML,'DIRECTORYXML');

	if(oROOT.childNodes.length == 1)
	{
		//EITHER ERROR OR LOCATIONS
		var oLOC = getNode(oROOT,'LOCATIONS');
		if(oLOC){parseMultipleLocations(oLOC);}
		else
		{
			var oERR = getNode(oROOT,'ERROR');
			if(oERR){parseXMLError(oERR);}
			else{showRealError();}
		}
	}
	else if(oROOT.childNodes.length == 2)
	{
		//DIR RESULTS
		parseResults(oROOT);
	}
	else
	{
		//SOMETHING WENT WRONG
		showRealError();
	}
}

function parseResults(r)
{
	clearResults();

	//GET THE RESULTSET NODE
	r = getNode(r,'RESULTSET');

	addStringToResults('<'+'table width="100%" border="0" cellpadding="5" cellspacing="0" bgcolor="#f7f7f7">');

	var oRES;
	var oNAME;

	var sTemplate = new String('<'+'tr><'+'td align="left" class=n><'+'b>{0}<'+'/b><'+'br />{1}, {2}<'+'br /><'+'b>Tel<'+'/b>: {3}<'+'/td><'+'/tr>');
	var sAdTemplate = new String('<'+'tr><'+'td align="right" width="100%" style="border-bottom:solid 1px #CCCCCC;">{0}&nbsp;&nbsp;&nbsp;{1}<'+'/td><'+'/tr>');

	var sNAME = new String('');
	var sCONTACTCITY = new String('');
	var sPOSTCODE = new String('');
	var sCONTACTTEL = new String('');

	var oSHOWWEBSITE;
	var sSHOWWEBSITE = new String('');
	var oENQUIREREDIRECT;
	var sENQUIREREDIRECT = new String('');

	for(var ires = 0; ires < r.childNodes.length; ires++)
	{
		oRES = r.childNodes[ires];

		sNAME =	'';
		oNAME = null;
		if(getNode(oRES,'NAME')){oNAME = getNode(oRES,'NAME');}
		else{oNAME = getNode(oRES,'CONTACTCOMPANY');}

		sNAME =			nodeValue(oNAME);

		sCONTACTCITY =	''; sCONTACTCITY =	nodeValue(getNode(oRES,'CONTACTCITY'));
		sPOSTCODE =		''; sPOSTCODE =		nodeValue(getNode(oRES,'POSTCODE'));
		sCONTACTTEL =	''; sCONTACTTEL =	nodeValue(getNode(oRES,'CONTACTTEL'));

		addStringToResults(sTemplate.format(sNAME,sCONTACTCITY,sPOSTCODE,sCONTACTTEL));

		//ADVERTISING - web site
		sSHOWWEBSITE =	'&nbsp;';
		oSHOWWEBSITE = null;
		if(getNode(oRES,'SHOWWEBSITE'))
		{
			oSHOWWEBSITE = getNode(oRES,'SHOWWEBSITE');
			sSHOWWEBSITE = '<'+'a href="' + nodeValue(oSHOWWEBSITE) + '" target="_blank" class=red><'+'img src="/assets/website.gif" border=0'+'> <'+'/a>';
		}

		//ADVERTISING - enquiry
		sENQUIREREDIRECT =	'&nbsp;';
		oENQUIREREDIRECT = null;
		if(getNode(oRES,'ENQUIREREDIRECT'))
		{
			oENQUIREREDIRECT = getNode(oRES,'ENQUIREREDIRECT');
			sENQUIREREDIRECT = '<'+'a href="' + nodeValue(oENQUIREREDIRECT) + '" target="_blank">Contact us<'+'/a>';
		}

		addStringToResults(sAdTemplate.format(sSHOWWEBSITE,sENQUIREREDIRECT));

	}

	addStringToResults('<'+'/table>');

	showInfoPanel('dvResults');
}

function parseMultipleLocations(r)
{
	clearResults();

	addStringToResults('<'+'table width="100%"><'+'tr><'+'td align="left">Did you mean:<'+'ul>');

	var l;
	var locstring = new String('');

	for(var iln = 0; iln < r.childNodes.length; iln++)
	{
		l = r.childNodes[iln];

		addStringToResults('<'+'li><'+'a href="#" onclick="loc=\'' + l.getAttribute('ph') + '\';js__dir__search__prep();return false;">');

		locstring = '';
		if(nnif(l.getAttribute('DD'))==true){locstring += ', ' + l.getAttribute('DD');}
		if(nnif(l.getAttribute('D'))==true){locstring += ', ' + l.getAttribute('D');}
		if(nnif(l.getAttribute('T'))==true){locstring += ', ' + l.getAttribute('T');}
		if(nnif(l.getAttribute('C'))==true){locstring += ', ' + l.getAttribute('C');}
		if(nnif(l.getAttribute('R'))==true){locstring += ', ' + l.getAttribute('R');}

		locstring = locstring.shave(', ');

		addStringToResults(locstring + '<'+'/a><'+'/li>');
	}

	addStringToResults('<'+'/ul><'+'/td><'+'/tr><'+'/table>');

	showInfoPanel('dvResults');
}

function parseXMLError(r)
{
	clearResults();
	addStringToResults('Error: ' + nodeValue(r));
	showInfoPanel('dvResults');
}

function getNode(pn,nn)
{
	if(pn.childNodes.length>0)
	{
		for(var ixn = 0; ixn < pn.childNodes.length; ixn++)
		{
			if(pn.childNodes[ixn].nodeName == nn)
			{
				//return ixn;
				return pn.childNodes[ixn];
			}
		}
	}
	else{return null;}
}

function nodeValue(n)
{
	var s = new String('');
	if(n)
	{
		if(nnif(n.nodeValue)==false){s = n.nodeValue}
		else
		{
			try
			{
				s = n.childNodes[0].nodeValue;
				//CHECK FOR CDATA
			}
			catch(e)
			{
				//alert('error: '+n.nodeName);
			}
		}
	}

	return s;
}

function loadXML(xmlFile)
{
	oDOC.open("GET",xmlFile,false);
	oDOC.onreadystatechange=verify;
	oDOC.send(null);

	oXML = oDOC.responseXML;
}

function verify()
{
	if (oDOC.readyState != 4) {return false;}
}

function xh()
{
	var req = null;
	try
	{
		// Try to use the ActiveX version of XMLHttpRequest. This will
		// allow developers to load file URLs in IE7 when running in the
		// local zone.

		var msProgIDs = ["MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];

		if (window.ActiveXObject)
		{
			while (!req && msProgIDs.length)
			{
				try { req = new ActiveXObject(msProgIDs[0]); } catch (e) { req = null; }
				if (!req){ msProgIDs.splice(0, 1); }
			}
		}

		// We're either running in a non-IE browser, or we failed to
		// create the ActiveX version of the XMLHttpRequest object.
		// Try to use the native version of XMLHttpRequest if it exists.

		if (!req && window.XMLHttpRequest){ req = new XMLHttpRequest(); }
	}
	catch (e) { req = null;	}

	return req;
}

/***************************/

function clearResults()
{
	if(!aInfoPanels){MakeInfoPanelsReady();}
	sResultsPanel = '';
}

function addStringToResults(s)
{
	if(!aInfoPanels){MakeInfoPanelsReady();}
	sResultsPanel += s;
}

function showRealError()
{
	clearResults();
	addStringToResults('<'+'font color="#FF0000">There has been a <'+'b>REAL<'+'/b> error<'+'/font>');
	showInfoPanel('dvResults');
}

function MakeInfoPanelsReady()
{
	aInfoPanels = new Array(ge('dvNoResults'),ge('dvLoading'),ge('dvResults'));
}

function showInfoPanel(panelId)
{
	if(!aInfoPanels){MakeInfoPanelsReady();}

	for(var i=0;i<aInfoPanels.length;i++)
	{
		if(aInfoPanels[i].id.toLowerCase() == panelId.toLowerCase())
		{
			if(panelId.toLowerCase()=='dvresults'){aInfoPanels[i].innerHTML = sResultsPanel;}

			showElm(aInfoPanels[i]);
		}
		else{hideElm(aInfoPanels[i]);}
	}
}

function ge(s){return document.getElementById(s);}

String.prototype.format=function()
{
    var s=this;
    for(var i=0;
    i<arguments.length;i++)
    {
        s=s.replace('{'+i+'}',arguments[i]);
    }
    return s;
};
String.prototype.shave=function(f)
{
	var s=this;
	
	if(s.startsWith(f)){s = s.substring(f.length,s.length);}
	if(s.endsWith(f)){s = s.substring(0,s.length-f.length);}

    return s;
};
String.prototype.lTrim=function()
{
    return this.replace(/^(\s|\xA0)*/,"");
};
String.prototype.rTrim=function()
{
    return this.replace(/(\s|\xA0)*$/,"");
};
String.prototype.trim=function()
{
    return this.rTrim().lTrim();
};
String.prototype.endsWith=function(c)
{
    return this.substr(this.length-c.length)==c;
};
String.prototype.startsWith=function(e)
{
    return this.substr(0,e.length)==e;
};

function gv(id)//GET VALUE
{
	var elm;
	elm=ge(id);
	if(elm)
	{
		if(elm.type.toLowerCase()=='select-one')
		{
			return elm.options[elm.selectedIndex].value;
		}
		else{return elm.value;}
	}
	else {return '';}
}

function hideElm(elm)
{
	if(elm)
	{
		if(elm.style)
		{
			elm.style.visibility='hidden';
			elm.style.display='none';
		}
	}
}

function showElm(elm)
{
	if(elm)
	{
		if(elm.style)
		{
			elm.style.visibility='visible';
			elm.style.display='';
		}
	}
}

function nnif(fn_s)
{
     var s = new String(fn_s);
     var out = new Boolean(false);
     //alert(s + '\nnot null: ' + (s!=null) + '\nnot \'\': ' + (s!='') + '\nnot undefined: ' + (s!='undefined'))
     if (s!=null){if(s!=''){if(s!='undefined'){out=true;}}}
     return out;
}