
try{
	var testCommons=new 
	MQObject();
	testCommons=null;
}catch(error){
	throw"You must include mqcommon.js or toolkit api script prior to mqutils.js.";
}
var mqutils=1;
if(!Array.prototype.push)Array.prototype.push=function(){
	var length=Array.push.arguments.length;
	for(var i=0;i<length;i++)
		this[this.length]=Array.push.arguments[i];
	return this.length;
};
function mq_ParamExists(varname){
	var undef;return(varname!==undef);
}
function mqGetElementById(fId){
	if(document.getElementById(fId)){
		return document.getElementById(fId);
	}
	return null;
}
function mqBuildUrl(strQueryData){
	var mqServer=_mqServerPort.replace(/mapquest.com:?\d*/,'mapquest.com');
	return(_reqPrefix+mqServer+"/oapi/transaction?"+strQueryData+"&key="+_mqKey);
}
function mqUrlLimit(){
	var maxLength=2048;
	if(mqBrowserInfo.isNS){maxLength=7168;}
	return maxLength;
}
function mqLimitDisplay(){
	var dispLength=2;
	if(mqBrowserInfo.isNS){dispLength=7;}
	return dispLength;
}
function mqDoRemote(strQueryData,strDivName,strParentTagName,mqObj){
	var parent=document.getElementsByTagName(strParentTagName).item(0);
	var scMQRemote=mqGetElementById(strDivName);
	if(scMQRemote){parent.removeChild(scMQRemote);}
	scMQRemote=document.createElement("script");
	var srcString=mqBuildUrl(strQueryData);
	if(strQueryData.substring(0,4)=="http"){srcString=strQueryData;}
	if(srcString.length>mqUrlLimit()){
		alert("The request query exceeds the limit ("+mqLimitDisplay()+" Kb) allowed for your browser type. Please reduce the amount of data in the request query!");
		return;
	}
	scMQRemote.src=srcString;
	scMQRemote.type="text/javascript";
	scMQRemote.id=strDivName;
	parent.appendChild(scMQRemote);
}
function mqCreateXMLDocImportNode(ndNewRoot){
	var newDoc;
	if(document.implementation.createDocument){
		var newDoc=document.implementation.createDocument("","",null);
		try{
			newDoc.appendChild(newDoc.importNode(ndNewRoot,true))
		}catch(error){
			alert(error);
			alert(ndNewRoot.nodeName);
		};
	}else if(window.ActiveXObject){
		newDoc=new ActiveXObject("Microsoft.XMLDOM");
		newDoc.async="false";
		newDoc.loadXML(ndNewRoot.xml);
	}
	return newDoc;
}
function mqXmlToStr(xmlDoc){
	var strXml=new String;
	var serializer=null;
	if(xmlDoc==null)return"";
	if(mqBrowserInfo.isNS){
		serializer=new window.XMLSerializer();
		strXml=serializer.serializeToString(xmlDoc);
	}else if(mqBrowserInfo.isIE){
		strXml=xmlDoc.xml;
	}
	if(mqBrowserInfo.isSafari){
		serializer=new window.XMLSerializer();
		strXml=serializer.serializeToString(xmlDoc);
		strXml=strXml||"";
		strXml=strXml.replace(/#38;/g,'&');
	}
	return strXml;
}
function mqCreateNSManager(namespace){
	var nsmgr={normalResolver:xmlDoc.createNSResolver(xmlDoc.documentElement),lookupNamespaceURI:function(prefix){
		switch(prefix){
			case"_mq":return namespace;
			default:return this.normalResolver.lookupNamespaceURI(prefix);
		}}
	}
	return nsmgr;
}
function mqGetNode(xmlDoc,strPath){
	var node;
	if(mqBrowserInfo.isSafari){
		var names=new Array();
		names=strPath.split('/');
		if(names[names.length-1].indexOf('@')!=-1){
			names.splice(names.length-1,1);
		}
		var tree=xmlDoc.documentElement;
		var isfound=false;
		if(names.length==2&&tree.tagName==names[1])isfound=true;
		else {
			var length=names.length-1;
			for(var i=1;i<length;i++){
				isfound=false;
				if(tree.tagName==names[i]&&tree.hasChildNodes()){
					var nodes=(tree.hasChildNodes())?tree.childNodes.length:0;
					for(var j=0;j<nodes;j++){
						if(tree.childNodes[j].tagName==names[i+1]){
							tree=tree.childNodes[j];isfound=true;break;
						}
					}
				}
				if(names[i+1]&&names[i+1].indexOf('text()')!=-1){isfound=true;}
				if(names[i+1].indexOf('[')!=-1){
					var index=parseInt(names[i+1].substr(names[i+1].indexOf('[')+1,names[i+1].indexOf(']')-1));
					names[i+1]=names[i+1].substr(0,names[i+1].indexOf('['));
					tree=xmlDoc.getElementsByTagName(names[i+1]).item(index-1);
					isfound=true;
				}
			}
		}
		node=(isfound==true)?tree:null;
		return node;
	} else if(mqBrowserInfo.isIE){
		node=xmlDoc.selectSingleNode(strPath);
		return node;
	}else if(mqBrowserInfo.isNS){
		node=xmlDoc.evaluate(strPath,xmlDoc,null,9,null);
		return node.singleNodeValue;
	}
	return null;
}
function mqGetNodeText(domNode){
	var elemText="";
	if(mqBrowserInfo.isIE){
		elemText=domNode.text;
	}else if(mqBrowserInfo.isNS&&domNode.firstChild){
		elemText=domNode.firstChild.nodeValue;
	}
	if(mqBrowserInfo.isSafari&&domNode.firstChild){
		elemText=domNode.firstChild.nodeValue;
		elemText=(elemText?elemText:"");
		elemText=elemText.replace(/#38;/g,'&');
	}
	return elemText;
}
function mqGetXPathNodeText(xmlDoc,strPath){
	var node;
	if(mqBrowserInfo.isSafari){
		node=mqGetNode(xmlDoc,strPath);
		var nodeText="";
		var attribute="";
		if(strPath.indexOf('@')!=-1){
			attribute=strPath.substr(strPath.indexOf('@')+1,strPath.length);
			nodeText=node.attributes.getNamedItem(attribute).nodeValue;
		} else if(node){
			nodeText=mqGetNodeText(node);
		}
		return nodeText;
	}
	if(mqBrowserInfo.isIE){
		node=xmlDoc.selectSingleNode(strPath);
		return(node==null?"":node.text);
	}else if(mqBrowserInfo.isNS){
		try{
			node=xmlDoc.evaluate(strPath,xmlDoc,null,2,null);
		}catch(error){
			alert(strPath);
			alert(error);
		}
		return node.stringValue;
	}
	return"";
}
function mqReplaceNode(xmlDoc,node,strTxt){
	var ndNewText=xmlDoc.createTextNode(strTxt);
	if(node.firstChild){
		return node.replaceChild(ndNewText,node.firstChild);
	}else{
		return node.appendChild(ndNewText);
	}
}
function mqReplaceElementNode(xmlDoc,nodeDoc,xpath){
	var root=xmlDoc.documentElement;
	var newnode=nodeDoc.documentElement;
	var oldnode=xmlDoc.getElementsByTagName(xpath).item(0);
	if(mqBrowserInfo.isIE) node=newnode
	else node=xmlDoc.importNode(newnode,true);
	if(oldnode){
		root.replaceChild(node,oldnode);
	}else{
		root.appendChild(node);
	}
	return xmlDoc;
}
function mqSetNodeText(xmlDoc,strXPath,strTxt){
	var ndParent=mqGetNode(xmlDoc,strXPath);
	if(ndParent==null){return null;}
	return mqReplaceNode(xmlDoc,ndParent,strTxt);
}
function mqTransformXMLFromString(strXml,strXsl,dvParent){
	var xmlDoc=mqCreateXMLDoc(strXml);
	var xslDoc=mqCreateXMLDoc(strXsl);
	var newFragment;
	if(mqBrowserInfo.isNS){
		var xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xslDoc);
		newFragment=xsltProcessor.transformToFragment(xmlDoc,document);
		dvParent.appendChild(newFragment);
	}else if(mqBrowserInfo.isIE){
		var newFragment=new ActiveXObject("Msxml2.DOMDocument.5.0");
		newFragment=xmlDoc.transformNode(xslDoc);
		dvParent.innerHTML+=newFragment;
	}
}
function mqTransformXMLFromNode(ndXml,strXsl,dvParent){
	var xslDoc=mqCreateXMLDoc(strXsl);
	var newFragment;
	if(mqBrowserInfo.isNS){
		var xsltProcessor=new XSLTProcessor();
		xsltProcessor.importStylesheet(xslDoc);
		newFragment=xsltProcessor.transformToFragment(ndXml,document);
		dvParent.appendChild(newFragment);
	}else if(mqBrowserInfo.isIE){
		var newFragment=new ActiveXObject("Msxml2.DOMDocument.5.0");
		newFragment=ndXml.transformNode(xslDoc);
		dvParent.innerHTML+=newFragment;
	}
}
function mqFormatNumber(num,dec){
	return Math.floor(num*Math.pow(10,dec))/Math.pow(10,dec);
}
function mq_display_time(totalTime){
	var newTime;
	if(totalTime>3600){
		newTime=totalTime/3600;
		var result=(" "+Math.floor(newTime)+" hours,");
		newTime=(totalTime/60)%60;
		result+=(" "+mqFormatNumber(newTime,2)+" minutes");
		return result;
	}
	if(totalTime>60) {
		newTime=totalTime/60;
		return(" "+mqFormatNumber(newTime,2)+" minutes");
	}
}
function mq_display_distance(totalDistance){
	return(" "+mqFormatNumber(totalDistance.value,2)+(totalDistance.units=="mi"?" miles":" kilometers"));
}
var isIE5Mac=(navigator.userAgent.indexOf('MSIE 5')!=-1&&navigator.userAgent.indexOf('Mac')!=-1);
function mqCreateFormInput(container,id,spanClass,labelTxt,type,name,value,size,maxLength){
	var div=container.appendChild(document.createElement('div'));
	div.className='row';
	var label=div.appendChild(document.createElement('label'));
	label.htmlFor=id;
	label.appendChild(document.createTextNode(labelTxt));
	div.appendChild(document.createElement('br'));
	var input=document.createElement('input');
	input.id=id;
	input.type=type;
	input.name=name;
	if(size!=""){input.size=size;}
	if(!isNaN(parseInt(maxLength))){input.maxLength=parseInt(maxLength);}
	if(value!=""){input.value=value;}
	if(spanClass!=""){
		var span=div.appendChild(document.createElement('span'));
		span.className=spanClass;
		span.appendChild(input);
	}else{
		div.appendChild(input);
	}
}
function mqCreateInput(container,id,type,name,value,size,maxLength){
	var input=document.createElement('input');
	input.id=id;input.type=type;
	input.name=name;
	if(size!=""){input.size=size;}
	if(!isNaN(parseInt(maxLength))){input.maxLength=parseInt(maxLength);}
	if(value!=""){input.value=value;}
	container.appendChild(input);
}
function mqCreateHiddenInput(form,id,name,value){
	var input;
	if(isIE5Mac){
		input=document.createElement('input type=hidden');
	}else{
		input=document.createElement('input');
		input.type='hidden';
	}
	input.name=name;if(id!=''){input.id=id;}
	if(value!=''){input.value=value;}
	form.appendChild(input);
}
function mqCreateFormSelect(container,id,spanClass,labelTxt,name,elements,node){
	var div=container.appendChild(document.createElement('div'));
	div.className='row';
	var label=div.appendChild(document.createElement('label'));
	label.htmlFor=id;
	label.appendChild(document.createTextNode(labelTxt));
	div.appendChild(document.createElement('br'));
	if(spanClass!=""){
		var span=div.appendChild(document.createElement('span'));
		span.className=spanClass;
		var select=span.appendChild(document.createElement('select'));
	}else{
		var select=div.appendChild(document.createElement('select'));
	}
	select.id=id;
	select.name=name;
	length=elements.length;
	for(x=0;x<length;x++){
		var option=select.appendChild(document.createElement('option'));
		eval("option.value = elements[x]."+node);
		eval("option.appendChild (document.createTextNode (elements[x]."+node+"))");
	}
	return select;
}
function mqCreateDiv(container,className,id){
	var div=container.appendChild(document.createElement('div'));
	if(className!=""){div.className=className;}
	if(id!=""){div.id=id;}
	return div;
}
function mqCreateA(container,href,title){
	var a=container.appendChild(document.createElement('a'));
	a.href=href;
	if(title!=""){a.title=title;}
	return a;
}
function mqCreateSpan(container,className,id){
	var span=container.appendChild(document.createElement('span'));
	if(className!=""){span.className=className;}
	if(id!=""){span.id=id;}
	return span;
}
function mqCreateImg(container,src,width,height,id,name,alt){
	var img=container.appendChild(document.createElement('img'));
	if(src!=""){img.src=src;}
	if(!isNaN(parseInt(width))){img.width=parseInt(width);}
	if(!isNaN(parseInt(height))){img.height=parseInt(height);}
	if(id!=""){img.id=id;}
	if(name!=""){img.name=name;}
	if(alt!=""){img.alt=alt;}
	return img;
}
function mqCreateImgDiv(container,src,width,height,id,name,alt){
	var div=container.appendChild(document.createElement('div'));
	if(id!=""){div.id=id;}
	if(!isNaN(parseInt(width))){div.style.width=parseInt(width)+"px";}
	if(!isNaN(parseInt(height))){div.style.height=parseInt(height)+"px";}
	if(name!=""){div.name=name;}
	if(alt!=""){div.alt=alt;}
	return div;
}
function mqXMLHttpRequest(){
	var request=null;
	if(window.XMLHttpRequest){
		try{request=new XMLHttpRequest();}
		catch(e){request=null;}
	}else if(window.ActiveXObject){
		try {request=new ActiveXObject("Msxml2.XMLHTTP");}
		catch(e){
			try{request=new ActiveXObject("Microsoft.XMLHTTP");}
			catch(e){request=null;}
		}
	}
	return request;
}
function mqAddEvent(fObj,fEvent,fn){
	if(window.opera&&mqBrowserInfo.version<8){
		var r=fObj.attachEvent("on"+fEvent,fn);
		return r;
	}else if(fObj.addEventListener){
		((window.opera)&&(mqBrowserInfo.version>=8))?fObj.addEventListener(fEvent,fn,false):fObj.addEventListener(fEvent,fn,true);
		return true;
	}else if(fObj.attachEvent){
		var r=fObj.attachEvent("on"+fEvent,fn);return r;
	}else{fObj["on"+fEvent]=fn;}
}
function mqRemoveEvent(fObj,fEvent,fn){
	if(window.opera){
		eval("fObj.on"+fEvent+" = null");
	}
	if(fObj.removeEventListener){
		((window.opera)&&(mqBrowserInfo.version>=8))?fObj.removeEventListener(fEvent,fn,false):fObj.removeEventListener(fEvent,fn,true);
	}else if(fObj.detachEvent){
		fObj.detachEvent("on"+fEvent,fn);
	}else{fObj["on"+fEvent]=null;}
}
function mqGetEventData(evt){
	fEventData=new Object();
	if(document.addEventListener){
		fEventData.id=evt.target.id;
		fEventData.type=evt.type;
		fEventData.element=evt.target;
	}else if(window.event){
		fEventData.id=window.event.srcElement.id;
		fEventData.type=window.event.type;
		fEventData.element=window.event.srcElement;
	}else{return null;}
	return fEventData;
}
function mqGetXY(evt){
	xyData=new Object();
	if(!document.createElement||!document.getElementsByTagName)return;
	if(!document.createElementNS){
		document.createElementNS=function(ns,elt){return document.createElement(elt);}
	}
	if(document.addEventListener&&typeof evt.pageX=="number"){
		var Element=evt.target;
		var CalculatedTotalOffsetLeft=CalculatedTotalOffsetTop=0;
		while(Element.offsetParent){
			CalculatedTotalOffsetLeft+=Element.offsetLeft;
			CalculatedTotalOffsetTop+=Element.offsetTop;
			Element=Element.offsetParent;
		}
		var OffsetXForNS6=evt.pageX-CalculatedTotalOffsetLeft;
		var OffsetYForNS6=evt.pageY-CalculatedTotalOffsetTop;
		xyData.elementId=evt.target.id;
		xyData.elementX=OffsetXForNS6;
		xyData.elementY=OffsetYForNS6;
		xyData.pageX=evt.pageX;
		xyData.pageY=evt.pageY;
	}else if(window.event&&typeof window.event.offsetX=="number"){
		xyData.elementId=window.event.srcElement.id;
		xyData.elementX=event.offsetX;
		xyData.elementY=event.offsetY;
		xyData.pageX=0;
		xyData.pageY=0;
		var element=mqGetElementById(xyData.elementId);
		while(element){
			xyData.pageX+=element.offsetLeft;
			xyData.pageY+=element.offsetTop;
			element=element.offsetParent;
		}
		xyData.pageX+=xyData.elementX;xyData.pageY+=xyData.elementY;
	}
	return xyData;
}
function mqGetPDivSize(pMQMapObject){
	size=new MQSize();
	if(pMQMapObject.parent.style.width.length==0)pMQMapObject.parent.style.width="800px";
	if(pMQMapObject.parent.style.height.length==0)pMQMapObject.parent.style.height="600px";
	size.setWidth(parseInt(pMQMapObject.parent.style.width)-4);
	size.setHeight(parseInt(pMQMapObject.parent.style.height)-4);
	return size;
}
function mqSetPDivSize(pMQMapObject,size){
	pMQMapObject.parent.style.width=size.getWidth()+"px";
	pMQMapObject.parent.style.height=size.getHeight()+"px";
}
function mqurlencode(strVal){
	var strEncode;
	strEncode=strVal.replace(/%/g,"%25");
	strEncode=strEncode.replace(/&/g,"%26");
	strEncode=strEncode.replace(/#/g,"%23");
	strEncode=strEncode.replace(/\//g,"%2F");
	strEncode=strEncode.replace(/:/g,"%3A");
	strEncode=strEncode.replace(/;/g,"%3B");
	strEncode=strEncode.replace(/=/g,"%3D");
	strEncode=strEncode.replace(/\?/g,"%3F");
	strEncode=strEncode.replace(/@/g,"%40");
	strEncode=strEncode.replace(/\$/g,"%24");
	strEncode=strEncode.replace(/,/g,"%2C");
	strEncode=strEncode.replace(/\+/g,"%2B");
	return strEncode;
}
function mqGetGuid(){
	var org=new Date(2006,0,1);
	var now=new Date();
	do{var cur=new Date();}
	while(cur-now<1);
	var diff=cur.getTime()-org.getTime();
	return(Math.ceil(diff));
}
function mqPause(numberMillis){
	var now=new Date();
	var exitTime=now.getTime()+numberMillis;
	while(true){
		now=new Date();
		if(now.getTime()>exitTime)return;
	}
}
var _mqLogStartTime=null;
var _mqLogCurTime=null;
var _mqLogprevTime=null;
function mqLogTime(str){
	if(mqGetElementById("mqTimeLogs")){
		var logtext=mqGetElementById("mqTimeLogs");
		var mqTimeLogger=new Date();
		if(_mqLogStartTime==null){
			logtext.value="Time(ms) Difference\t Message\n";
			_mqLogStartTime=mqTimeLogger.getTime();
			_mqLogprevTime=_mqLogStartTime;
		}
		_mqLogCurTime=mqTimeLogger.getTime();
		var diff=_mqLogCurTime-_mqLogStartTime;
		var del=_mqLogCurTime-_mqLogprevTime;
		logtext.value=logtext.value+diff+"\t "+del+"\t\t "+str+"\n";
		_mqLogprevTime=_mqLogCurTime;
	}
}
function mqResetTimeLogs(){
	if(mqGetElementById("mqTimeLogs")){
		var logtext=mqGetElementById("mqTimeLogs");
		var mqTimeLogger=new Date();
		logtext.value="Time(ms) Difference\t Message\n";
		_mqLogStartTime=mqTimeLogger.getTime();
		_mqLogprevTime=_mqLogStartTime;
	}
}
function mqGetAdvantageResultPath(transaction){
	var resultsPath;
	if(transaction=="poiMap") resultsPath="poiResults";
	else if(transaction=="locMap") resultsPath="locations";
	else if(transaction=="search") resultsPath="searchResults";
	return resultsPath;
}
function mqGetAdvantageMapPath(transaction){
	var mapPath;
	if(transaction=="locMap")mapPath="/advantage/"+transaction+"/locations/location/map";
	else mapPath="/advantage/"+transaction+"/map";
	return mapPath;
}
function mqPrepareMapUrl(strmapUrl){
	var mapUrl="";
	mapUrl=strmapUrl.replace(/https?:\/\//,_reqPrefix);mapUrl=mapUrl.replace(/mapquest.com:?\d*/,'mapquest.com');
	mapUrl=mapUrl.replace(/iwebsys.aol.com:?\d*/,'iwebsys.aol.com');
	return mapUrl;
}
function display(pid,name,value,id,sClass){
	if(mqGetElementById(pid)){
		var div=mqGetElementById(pid);
		var label=div.appendChild(document.createElement('label'));
		var bb=label.appendChild(document.createElement('b'));
		bb.appendChild(document.createTextNode(name));
		div.appendChild(document.createElement('br'));
		var span=div.appendChild(document.createElement('textarea'));
		span.className=sClass;
		span.style.overflow="auto";
		if(id!=null)span.id=id;
		span.appendChild(document.createTextNode(value));
		div.appendChild(document.createElement('br'));
		div.appendChild(document.createElement('br'));
	}
}
