/* dealer finder version 2.8 */
/* 
v9_gmap_script.js
use dealer address for direction search, fix initPrintRoute
better google search restricted to country
fix enter error 2nd screen search
added svalbard back to norway
fix ru zipcodes
*/

var G={gecko:navigator.product=='Gecko',
ie6:(!!document.all && !(typeof window.XMLHttpRequest=='object')),
init:function(){try{document.execCommand('BackgroundImageCache', false, true)}catch(err){};for(var n in G)if(G[n].init)G[n].init()},
set:function(a,b){for(var o in b)a[o]=b[o];return a},
create:function(a,b,c,d){var o=(d||document).createElement(a);G.set(o,b);G.set(o.style,c);return o},
append:function(a,b,c,d){var o=b.tagName?b:G.create(b,c,d,a.ownerDocument);a.appendChild(o);return o},
middle:function(o,a,b){o=o.split(a);return(o.length<2)?'':o[1].split(b)[0]},
expand:function(a){((a.nodeName)?a:$(a)).style.display='block'},
collapse:function(a){((a.nodeName)?a:$(a)).style.display='none'},
_:function(){var w=window;return w.XMLHttpRequest?new XMLHttpRequest():w.ActiveXObject?new ActiveXObject('Microsoft.XMLHTTP'):null},
get:function(a){var r=this._();r.open('GET',a,false);r.send(null);return r}
};function $(a){return document.getElementById(a)};function $$(a,b){return (b||document).getElementsByTagName(a)}
window.onload=G.init

G.map={onRoute:false,allChecked:false,step:0,
servicePath:'/sys/dotnet/MapTools.aspx',
icoBase:'/images/',
wPath:'/site_tools/dealermaps/',
wOpt:'menubar=1,resizable=1,scrollbars=1,width=670,height=550',
init:function(){
	var m=this,a,b,o=$('disclaimer')
	if(o)if(o.innerHTML=='')o.style.display='none'
	if(location.search.indexOf('ui=blankpage')==-1)if(window.top.location==location){location.replace('/index.aspx?form='+location.href);return}
	m.activeMsg=$('msg0')
	document.onkeypress=m.handleKey
	m.prepare()
	a=m.qVal('city');if(a){$('fAddress').value=a;m.evalStep1()}
},
getCountry:function(p){
	var v,i
	for(i=0;i<p.length;i++){
		if(p[i].types[0]=='country'){
			v=p[i].short_name;
			if(v=='LI')return 'CH';
			return(v=='SJ')?'NO':v
		}
	}
	return ''
},
fixAddr:function(a){
var v=a.replace(/Deurne(\W)*(Antwerp){0,1}/gi,'Deurne, Antwerp ')
v=v.replace(/Valby(\W)*(Copenhagen){0,1}/gi,'Valby, Copenhagen ')
v=v.replace(/Ski(\W)*(Follo){0,1}/gi,'Ski, Follo ')

//ru zipcodes
v=v.replace(/656066/gi,'Тойота Центр Барнаул@Барнаул')
v=v.replace(/308029/gi,'Тойота Центр Белгород@Белгород')
v=v.replace(/113452/gi,'Тойота Центр Битца@Москва')
v=v.replace(/394033/gi,'Тойота Центр Воронеж')
v=v.replace(/620100/gi,'Тойота Центр Екатеринбург Восток@Екатеринбург')
v=v.replace(/426075/gi,'Тойота Центр Ижевск@Ижевск')
v=v.replace(/664014/gi,'Тойота Центр Иркутск')
v=v.replace(/420100/gi,'Тойота Центр Казань Азино@Казань')
v=v.replace(/650070/gi,'Тойота Центр Кемерово@Кемерово')
v=v.replace(/350000/gi,'Тойота Центр Краснодар@Краснодар')
v=v.replace(/350000/gi,'Тойота Центр Краснодар Север@Краснодар')
v=v.replace(/660133/gi,'Тойота Центр Красноярск@Красноярск')
v=v.replace(/121594/gi,'Тойота Центр Кунцево')
v=v.replace(/305029/gi,'Тойота Центр Курск@Курск')
v=v.replace(/357204/gi,'Тойота Центр Минеральные Воды@Минеральные Воды')
v=v.replace(/622049/gi,'Тойота Центр Нижний Тагил@Нижний Тагил')
v=v.replace(/660133/gi,'Тойота Центр Новокузнецк@Новокузнецк')
v=v.replace(/143420/gi,'Нахабино')
v=v.replace(/644019/gi,'Тойота Центр Омск@Омск')
v=v.replace(/460019/gi,'Тойота Центр Оренбург@Оренбург')
v=v.replace(/188660/gi,'Тойота Центр Парнас@Санкт-Петербург')
v=v.replace(/440066/gi,'Тойота Центр Пенза@Пенза')
v=v.replace(/344013/gi,'Тойота Центр Ростов-на-Дону Юг@Ростов-на-Дону')
v=v.replace(/410018/gi,'Тойота Центр Саратов@Саратов')
v=v.replace(/107113/gi,'Тойота Центр Сокольники')
v=v.replace(/355035/gi,'Тойота Центр Ставрополь@Ставрополь')
v=v.replace(/453116/gi,'Тойота Центр Стерлитамак@Стерлитамак')
v=v.replace(/628400/gi,'Тойота Центр Сургут@Сургут')
v=v.replace(/634021/gi,'Тойота Центр Томск@Томск')
v=v.replace(/300025/gi,'Тойота Центр Тула@Тула')
v=v.replace(/625031/gi,'Тойота Центр Тюмень Север@Тюмень')
v=v.replace(/450083/gi,'Тойота Центр Уфа@Уфа')
v=v.replace(/162603/gi,'Тойота Центр Череповец@Череповец')
v=v.replace(/142770/gi,'Тойота Центр Ясенево')
v=v.replace(/150003/gi,'УП "Атлант-М Ярославль"@Ярославль')
v=v.replace(/629809/gi,'УП "Восток Моторс Ноябрьск"@Ноябрьск')
v=v.replace(/455049/gi,'УП "РеМаг2" (сервисное и гарантийное обслуживание)@Магнитогорск')
v=v.replace(/600005/gi,'Уполномоченный Партнер "Авто-Дрим"@Владимир')
v=v.replace(/241037/gi,'Уполномоченный Партнер "Автомир-32"@Брянск')
v=v.replace(/163071/gi,'Уполномоченный Партнер "Аксель-Норд"@Архангельск')
v=v.replace(/160017/gi,'Уполномоченный Партнер "Мартен"@Вологда')
v=v.replace(/640027/gi,'Уполномоченный Партнер "Оками Курган"@Курган')
v=v.replace(/462428/gi,'Уполномоченный Партнер "Орск-Авто-Центр"@Орск')
v=v.replace(/432026/gi,'Уполномоченный партнер "Тон-Авто"@Ульяновск')
v=v.replace(/428000/gi,'Уполномоченный Партнер "ТрансТехСервис-21"@Чебоксары')
v=v.replace(/398024/gi,'Уполномоченный партнер "Центр Липецк"@Липецк')
v=v.replace(/236001/gi,'Уполномоченный Партнер "Юто Карс"@Калининград')

//ch places
v=v.replace(/Vallon/gi,'1565')

return v
},

evalStep1:function(){
	var m=G.map,vA=$('fAddress').value,s,o,v
	m.SearchValue=vA
	G.collapse('destination')
	if(vA.length<2){dcsTrk('WT.pn=search error&SearchMethod=Address&SearchValue='+m.SearchValue);m.setMsg(1);$('eLabel1').className='error';return}
	$('eLabel1').className=''
	if(m.hasRadio&&!m.getRadioVal($('form1').radio1)){m.setMsg(3);$('eLabel2').className='error';return}
	$('eLabel1').className=''
	if(m.hasRadio)$('eLabel2').className=''
	m.setMsg(0)
	vA=m.fixAddr(vA)
	var geocoder=new google.maps.Geocoder()
       geocoder.geocode({'address':vA,region:m.country},function(results,status){
		var m=G.map
		if(status==google.maps.GeocoderStatus.OK){m.evalSearch(results)}
		else{dcsTrk('WT.pn=search error&SearchMethod=Address&SearchValue='+m.SearchValue);m.setMsg(1);$('eLabel1').className='error'}
	})
},
evalSearch:function(o){
	var m=G.map,i,oo=$('fDestination'),i,q=m.starts=[],p,r=new RegExp(m.country,'i'),n
	for(i=0;i<o.length;i++){
		p=o[i].address_components
		if(p.length>0 && r.test(m.getCountry(p)))m.starts.push(o[i])
	}
	if(q.length==0){dcsTrk('WT.pn=search error&SearchMethod=Address&SearchValue='+m.SearchValue);m.setMsg(2);$('eLabel1').className='error';return}
	m.setMsg(0);$('eLabel1').className=''
	if(q.length>1){
		for(i=oo.options.length;i>=0;i--)oo.options[i]=null
		oo.options[0]=new Option(m.destMsg,'')
		for(i=0;i<q.length;i++)oo.options[i+1]=new Option(i+': '+q[i].formatted_address,i)
		G.expand('destination')
	}
	else{G.collapse('destination');m.goStep2(0)}
},
goStep2:function(a){
	var m=G.map,x=$('form1').Option1,i,ff=[],p,v,sf,tm,o
	m.index=a;G.collapse('step1');m.copyVals();G.expand('step2')
	m.step=1
	p=m.starts[m.index].geometry.location
	if(m.hasRadio)x=$('form1').radio1
	if(x){
		for(i=0;i<x.length;i++){if(x[i].checked)ff.push(x[i].value)}
		sf=m.SearchFilter=ff.join('~')
	}
	v=m.servicePath+'?action=nearest&lat='+p.lat()+'&lon='+p.lng()+'&max='+(m.max_dealers?m.max_dealers:10)
	if(sf>'')v+='&filter='+sf
	o=G.get(v).responseXML
	m.results=$$('dealer',o)
	m.displayResult()
},

/* step 2 search*/
evalStep1b:function(){
	var m=G.map,vA=$('fAddress2').value,s,o
	m.SearchValue=vA
	if(vA==''){dcsTrk('WT.pn=search error&SearchMethod=Address&SearchValue='+m.SearchValue);$('errLabel2').className='error';G.expand('errMsg1');return}
	$('errLabel2').className='';G.collapse('errMsg1')
	vA=m.fixAddr(vA)
	var geocoder=new google.maps.Geocoder()
       geocoder.geocode({'address':vA,country:G.map.country},function(results,status){
		var m=G.map
		if(status==google.maps.GeocoderStatus.OK){m.evalSearch2(results)}
		else{dcsTrk('WT.pn=search error&SearchMethod=Address&SearchValue='+m.SearchValue);alert("Geocode was not successful for the following reason: "+status)}
	})
},
evalSearch2:function(o){
	var m=G.map,i,oo=$('fDestination2'),i,q=m.starts=[],p,r=new RegExp(m.country,'i'),n
	for(i=0;i<o.length;i++){
		p=o[i].address_components
		if(p.length>0 && r.test(m.getCountry(p)))m.starts.push(o[i])
	}
	if(q.length==0){dcsTrk('WT.pn=search error&SearchMethod=Address&SearchValue='+m.SearchValue);$('errLabel2').className='error';G.expand('errMsg1');return}
	$('errLabel2').className='';G.collapse('errMsg1')
	if(o.length>1){
		for(i=oo.options.length;i>=0;i--)oo.options[i]=null
		oo.options[0]=new Option(m.destMsg,'')
		for(i=0;i<o.length;i++)oo.options[i+1]=new Option(i+': '+o[i].formatted_address,i)
		G.expand('alertMsg1')
	}
	else{G.collapse('alertMsg1');m.goStep2b(0)}
},
goStep2b:function(a){
	var m=G.map,x=$('form2').Option2,i,ff=[],v,sf,p
	m.index=a
	G.collapse('alertMsg1')
	p=m.starts[m.index].geometry.location
	if(m.hasRadio)x=$('form2').radio2
	if(x){for(i=0;i<x.length;i++){if(x[i].checked)ff.push(x[i].value)}}
	sf=m.SearchFilter=ff.join('~')
	v=m.servicePath+'?action=nearest&lat='+p.lat()+'&lon='+p.lng()+'&max='+(m.max_dealers?m.max_dealers:10)
	if(sf>'')v+='&filter='+sf
	o=G.get(v).responseXML
	m.results=$$('dealer',o)
	m.displayResult()
},

displayResult:function(){
	var m=G.map,o=m.results,i,p,q,ico,pp,om,xt,xy,marker,image,shadow,ob,p1,p2,v=[],oa,ob
	var xx='km',pp,mm,g=google.maps
	m.map=new g.Map($('map01'),{
zoom:8,
center:m.starts[m.index].geometry.location,
mapTypeId:g.MapTypeId.ROADMAP,
mapTypeControl:true,
mapTypeControlOptions:{style:g.MapTypeControlStyle.DROPDOWN_MENU}
})
	mm=m.markers=[]
	dcsTrk('WT.seg_1=dealerfinder&WT.pn=search results&WT.si_x=2&SearchMethod=Address&SearchValue='+m.SearchValue+'&SearchFilter='+m.SearchFilter)
	if(o.length<1){alert('No POI found');return}
	xt=G.ie6?'.gif':'.png'
	ob=new g.LatLngBounds()
	p1=new g.Point(0,0)
	p2=new g.Point(16.5,41)
	shadow=new g.MarkerImage(m.icoBase+'shadow-markerSP.png',new g.Size(54,41),p1,p2)
	for(i=0;i<o.length;i++){
		pp=o[i]
		xy=new g.LatLng(pp.getAttribute('lat'),pp.getAttribute('lon'))
 		image=new g.MarkerImage(m.icoBase+'markerSP'+(i+1)+xt,new g.Size(33,41),p1,p2)
		ob.extend(xy)
 		marker=new g.Marker({map:m.map,position:xy,icon:image,shadow:shadow,title:pp.getAttribute('name')})
		marker.indexNum=i
		m.markers.push(marker)
		google.maps.event.addListener(marker,'click',m.click)
	}
	m.map.fitBounds(ob)
	for(i=0;i<o.length;i++){
		pp=o[i]
		oa=pp.getAttribute('name')
		ob=Math.round(pp.getAttribute('distance')*10)/10+' '+(G.map.kmDsp||'km')
		v.push('<a href="javascript:void null" onclick="G.map.showDetail('+i+',this)"><i>'+ob+'</i>'+m.fm(i+1)+oa+'</a>')
	}
	$('rNum').innerHTML=o.length
	$('rList').innerHTML=v.join('')
	m.showDetail(0,$$('a',$('rList'))[0])
},
click:function(){G.map.setDetail(this.indexNum)},
fm:function(a){return((a>9)?'':'&nbsp;')+a+'&nbsp;'},
setDetail:function(a){G.map.showDetail(a,$$('a',$('rList'))[a])},
showDetail:function(a,b){
	var m=G.map,o=m.results[a],v=[],h2,vv
	if(m.active)m.active.className=''
	m.active=b;m.selected=a;b.className='on'
	v.push('<div id="dTitle"><h2>'+o.getAttribute('name')+'</h2></div>')
	v.push('<p class="intro">' + o.getAttribute('address')+'<br />'+o.getAttribute('zip')+' '+o.getAttribute('city')+'</p>')
	v.push('<p><strong>'+m.tel+': </strong>'+o.getAttribute('phone')+'<br />')
	v.push('<strong>'+m.fax+': </strong>'+o.getAttribute('fax')+'<br />')
	v.push('<strong>'+m.email+': </strong>'+o.getAttribute('email')+'</p>')
	m.addServices(o,v)
	v.push('<p class="btnDir"><a class="btn" href="javascript:G.map.startRoute()"><b>'+m.directionsBtn+'</b><i></i></a><a class="btn" href="javascript:G.map.toggleExport()"><b>'+m.exportBtn+'</b><i></i></a></p>')
	v.push('<p>')
	vv=o.getAttribute('website')
	if(vv)v.push('<a class="btnSm" href="'+m.getLink(vv)+'" target="_blank" onclick="G.map.track()"><b>'+m.websiteBtn+'</b><i></i></a>')
	v.push('<a class="btnSm" href="javascript:G.map.printDetail(\''+o.getAttribute('key')+'\')"><b>'+m.printBtn+'</b><i></i></a>')
	v.push('</p>')
	$('rDetail').innerHTML=v.join('')
	h2=$$('h2',$('rDetail'))[0]
	if(h2.offsetHeight>40)h2.style.fontSize='11px'
	m.map.panTo(m.markers[a].getPosition())
},
getLink:function(a){
	var v='http://'
	if(a.indexOf('javascript:window.open(')>-1)return a.split("'")[1].split("'")[0]
	else return ((a.toLowerCase().indexOf(v)==0)?'':v)+a
},
track:function(){
	dcsTrk('WT.pn=open retailer site&WT.si_n=dealerfinder open site&WT.si_cs=1')
},
panToDetail:function(){
	var m=G.map
	try{m.map.panTo(m.panCoords)}
	catch(e){setTimeout(m.panToDetail,500)}
},
addServices:function(o,v){
	var m=this,i,p,oo=m.cats,q=$$('service',o),vv=[]
	for(i=0;i<q.length;i++)vv.push(q[i].getAttribute('code'))
	vv=vv.join('~')
	v.push('<p id="services">')
	for(i in oo){
		p=oo[i].split('|')
		if(vv.indexOf(p[2])>-1){v.push('<i class="i'+p[1]+'" title="'+p[0]+'"></i>')}
	}
	v.push('</p>')
},
printDetail:function(a){
	var m=G.map
	window.open(m.wPath+'printdealer.aspx?open&id='+a,'',m.wOpt)
},

// routeplanner

startRoute:function(a){
	var m=G.map
	$('fAddress3').value=$('fAddress2').value
	G.expand('getDir')
	dcsTrk('WT.pn=directions form&WT.si_x=3')
},
evalRoute:function(){
	var m=G.map,v=$('fAddress3').value
	if(v==''){alert('please fill in your start address.');return}
	var geocoder=new google.maps.Geocoder()
       geocoder.geocode({'address':v,country:G.map.country},function(results,status){
		var m=G.map
		if(status==google.maps.GeocoderStatus.OK){m.evalStartAddress2(results)}
		else{alert("Geocode was not successful for the following reason: "+status)}
	})
},
evalStartAddress2:function(a){
	var m=G.map,o,i,oo=$('fDestination3')
	o=m.routeStart=a
	if(o.length==0){$('errLabel2').className='error';G.expand('errMsg1');return}
	$('errLabel2').className='';G.collapse('errMsg1')
	if(o.length>1){
		m.onRoute=true
		for(i=oo.options.length;i>=0;i--)oo.options[i]=null
		for(i=0;i<o.length;i++)oo.options[i+1]=new Option(o[i].formatted_address,i)
		G.expand('alertMsg2')
	}
	else m.calcRoute(0)
},
calcRoute:function(a){
	var m=G.map,p1,p2,o,q,ds,p,g=google.maps
	m.startIndex=a
	p1=m.center=m.routeStart[a].geometry.location
	p=m.results[m.selected]
	p2=p.getAttribute('address')+' '+p.getAttribute('zip')+' '+p.getAttribute('city')
	ds=new google.maps.DirectionsService()
	q={origin:p1,destination:p2,travelMode:g.DirectionsTravelMode.DRIVING,language:m.lang,unitSystem:g.DirectionsUnitSystem.METRIC}
	ds.route(q,function(result,status){
		if(status==google.maps.DirectionsStatus.OK)G.map.displayRoute(result)
		else G.map.calcRoute2()
	})
},
calcRoute2:function(){
	var m=G.map,p1,p2,o,q,ds,p,g=google.maps,a
	a=m.startIndex
	p1=m.center=m.routeStart[a].geometry.location
	p=m.results[m.selected]
	p2=m.markers[m.selected].getPosition()
	ds=new google.maps.DirectionsService()
	q={origin:p1,destination:p2,travelMode:g.DirectionsTravelMode.DRIVING,language:m.lang,unitSystem:g.DirectionsUnitSystem.METRIC}
	ds.route(q,function(result,status){
		if(status==google.maps.DirectionsStatus.OK)G.map.displayRoute(result)
		else alert('Error getting directions: '+status)
	})
},
displayRoute:function(a){
	var m=G.map,dd,g=google.maps
	G.collapse('block2a');G.expand('block2b');
	G.collapse('step2a');G.expand('step2b')
	G.collapse('map01');G.expand('map02')
	dcsTrk('WT.pn=directions results&WT.si_x=4')
	m.map=new g.Map($('map02'),{
zoom:8,
center:m.center,
mapTypeId:g.MapTypeId.ROADMAP,
mapTypeControl:true,
mapTypeControlOptions:{style:g.MapTypeControlStyle.DROPDOWN_MENU}
})
	dd=new g.DirectionsRenderer()
	dd.setMap(m.map)
	$('theRoute').innerHTML=''
	dd.setPanel($('theRoute'))
	dd.setDirections(a)
},
changeMapScale:function(a){
	var o=G.vcm.map,s=o.getMapScale()
	if(a=='Min'){if(s<16)o.changeMapScale(s+1)}
	else{if(s()>0)o.changeMapScale(s-1)}
},
showDir:function(){
	var m=G.map,o=m.map,v=false
	o.hideControls()
},
showZoom:function(){
	var m=G.map,o=m.map
	m.modeFlag=!m.modeFlag
	o.activateSatelliteHybrid(m.modeFlag)
	o.showMapTools()
},
printRoute:function(){
	var m=G.map,a=m.center,b=m.results[m.selected].getAttribute('key'),v
	v=m.wPath+'printRoute.aspx?open&id='+b+'&lon='+a.lng()+'&lat='+a.lat()
	window.open(v, '',m.wOpt)
},
getRouteQuery:function(){
	var m=G.map,a=m.center,b=m.results[m.selected].getAttribute('key')
	return m.wPath+'printRoute.aspx?open&id='+b+'&lon='+a.lng()+'&lat='+a.lat()
},
emailRoute:function(){G.collapse('block2b');dcsTrk('WT.pn=email direction form&WT.si_n=dealerfinder email directions');G.expand('block2c')},
doSendMail:function(){
	var m=G.map,v=true,v2,vv=[],x,r
	vv.push(m.servicePath+'?action=mail')
	v2=$('fEmailFrom').value
	v=v&&m.evalMail('EmailFrom',v2)
	vv.push('from='+encodeURIComponent(v2))
	v2=$('fEmailTo').value
	v=v&&m.evalMail('EmailTo',v2)
	vv.push('to='+encodeURIComponent(v2))
	v2=$('fEmailSubject').value
	v=v&&m.evalFilled('EmailSubject',v2)
	if(!v)return
	dcsTrk('WT.pn=email direction submit&WT.si_n=dealerfinder email directions&WT.si_x=2&WT.si_cs=1')
	vv.push('subj='+encodeURIComponent(v2))
	x='http://'+G.middle(location.href,'//','/')+m.getRouteQuery()
	vv.push('body='+encodeURIComponent($('fEmailBody').value+'\n\n'+x))
	r=G.get(vv.join('&')).responseXML
	alert($('hEmailSuccess').innerHTML)
	m.doSendCancel()
},
evalFilled:function(a,b){var v=(b!='');$(a).className=v?'':'error';return v},
evalMail:function(a,b){
	var v=!!b.match(/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/)
	$(a).className=v?'':'error'
	return v
},
doSendCancel:function(){G.collapse('block2c');G.expand('block2b')},

cancelRoute:function(){G.collapse('getDir')},
back:function(){
	var m=G.map
	G.expand('block2a')
	G.collapse('block2b')
	G.collapse('block2c')
	G.collapse('step2b')
	G.collapse('alertMsg1')
	G.collapse('getDir')
	G.collapse('alertMsg2')
	G.collapse('map02')
	G.expand('step2a')
	G.expand('map01')
},
toggleExport:function(){
	var o=$('expGps')
	if(o.className=='')dcsTrk('WT.pn=gps export menu&WT.si_n=dealerfinder gps export')
	o.className=(o.className=='on')?'':'on'
},
doExport:function(a){
	var m=G.map,b=m.results[m.selected],v
	dcsTrk('WT.pn=gps download&WT.si_n=dealerfinder gps export&WT.si_x=2&WT.si_cs=1&GPSFormat='+a)
	v=m.servicePath+'?action=export&format='+a
	v+='&lon='+b.getAttribute('lon')+'&lat='+b.getAttribute('lat')+'&name='+b.getAttribute('name')
	window.open(v)
	m.toggleExport()
},
close:function(){dcsTrk('WT.pn=close&WT.si_n=&WT.si_x=');try{window.top.Tme.cta.close()}catch(e){};try{window.top.J.tmOvl.close()}catch(e){}},
getRadioVal:function(a){for(var i=0;i<a.length;i++){if(a[i].checked)return a[i].value};return null},
qVal:function(a){return unescape(G.middle(location.search,a+'=','&'))},
handleKey:function(e){
	var m=G.map,ev=(e)?e:window.event
	if(ev.keyCode!=13)return
	ev.cancelBubble=true;ev.returnValue=false
	if($('getDir').style.display=='block')m.evalRoute()
	else if(m.step==1)m.evalStep1b()
	else m.evalStep1()
	return false
},
getClass:function(a){
	var m=this,o=m.cats,i,p
	for(i=0;i<o.length;i++){p=o[i].split('|');if(p[2]==a)return 'i'+p[1]}
	return ''
},
prepare:function(){
	var m=this,o=m.items=[],i,q=m.cats,oo=[],o2=[],v,p,x,xx,x2,o1,o2,qq,q2,qt,s
	if($('fFilterA'))m.hasRadio=$('fFilterA').value!=''
	if(m.hasRadio){
		if(m.preselect)$$('input',$('fFI'))[m.preselect-1].checked='checked'
		qq=($$('label',$('fFI')))
		q2=($$('label',$('check2')))
		$('filterAll').style.display='none'
		qt=m.getClass($('fFilterA').value)
		qq[0].className=qt
		q2[0].className=qt
		qt=m.getClass($('fFilterB').value)
		qq[1].className=qt
		q2[1].className=qt
	}
	else{
		try{$('eLabel2').style.display='none';$('fFI').style.display='none'}
		catch(e){}
		for(i=0;i<9;i++){s=m.cats[i].split('|')[3];if(s=='TRUE'||s=='CHECKED')o.push(m.cats[i])}
		if(o.length==0){
			$('filterAll').style.display='none'
			$('checks02').style.display='none'
			m.hasServ=false
		}
		else{
			m.hasServ=true
			o2.push('<ul class="check" id="check2">')
			for(i=0;i<o.length;i++){
				v=o[i].split('|'),p=i+1,s=((v[3]=='CHECKED')?' checked="yes"':'')
			 	if(i%3==0)oo.push('<ul class="check">')
			 	oo.push('<li><input type="checkbox" name="Option1" id="fOption'+p+'" value="'+v[2]+'"'+s+' /><label for="fOption'+p+'" class="i'+v[1]+'">'+v[0]+'</label></li>')
			 	if(i%3==2)oo.push('</ul>')
			 	o2.push('<li><input type="checkbox" name="Option2" id="fOption2'+p+'" value="'+v[2]+'"'+s+' /><label for="fOption2'+p+'" class="i'+v[1]+'" title="'+v[0]+'"></label></li>')
			 }
			 if(i%3!=2)oo.push('</ul>')
			 o2.push('</ul>')
			 $('checks01').innerHTML=oo.join('\n')
			 $('checks02').innerHTML=o2.join('\n')
		}
	}
	G.expand('step1')
},
selectAll:function(a){
	var m=G.map,o=$('form1').Option1,i,v
	v=m.allChecked=!m.allChecked
	for(i=0;i<o.length;i++)o[i].checked=v
},
copyVals:function(){
	var m=this,o,t,i
	$('fAddress2').value=$('fAddress').value //m.starts[m.index].formatted_address
	if(m.hasRadio){o=$('form1').radio1;t=$('form2').radio2}
	else{o=$('form1').Option1;t=$('form2').Option2}
	if(o){for(i=0;i<o.length;i++)t[i].checked=o[i].checked}
},
radioChange:function(){
	if($('fAddress2').value!='')G.map.evalStep1b()
},
setMsg:function(a){var m=this,o=$('msg'+a);G.collapse(m.activeMsg);G.expand(o);m.activeMsg=o},
radioVal:function(a){for(var i=0;i<a.length;i++){if(a[i].checked)return a[i].value};return null},
initPrintDealer:function(){
	var m=this,g=google.maps,p,mm,im,sh,p1,p2,o,dlr,v=[],vv
	dlr=G.get(m.servicePath+'?action=dealer&id='+G.middle(location.search,'id=','&')).responseXML
	o=$$('dealer',dlr)[0]
	v.push('<div id="dTitle"><h2>'+o.getAttribute('name')+'</h2></div>')
	v.push('<p class="intro">' + o.getAttribute('address')+'<br />'+o.getAttribute('zip')+' '+o.getAttribute('city')+'</p>')
	v.push('<p><strong>'+m.tel+': </strong>'+o.getAttribute('phone')+'<br />')
	v.push('<strong>'+m.fax+': </strong>'+o.getAttribute('fax')+'<br />')
	v.push('<strong>'+m.email+': </strong>'+o.getAttribute('email'))
	vv=o.getAttribute('website')
	if(vv)v.push('<br /><strong>'+m.websiteBtn+': </strong>'+m.getLink(vv))
	v.push('</p>')
	m.addServices(o,v)
	$('rDetail').innerHTML=v.join('')
	h2=$$('h2',$('rDetail'))[0]
	if(h2.offsetHeight>40)h2.style.fontSize='11px'
	p=new g.LatLng(o.getAttribute('lat'),o.getAttribute('lon'))
	m.map=o=new g.Map($('map01'),{zoom:13,center:p,mapTypeId:g.MapTypeId.ROADMAP,disableDefaultUI:false})
	p1=new g.Point(0,0);p2=new g.Point(16.5,41)
	im=new g.MarkerImage(m.icoBase+'markerSP.png',new g.Size(33,41),p1,p2)
	sh=new g.MarkerImage(m.icoBase+'shadow-markerSP.png',new g.Size(54,41),p1,p2)
	m.mark=new g.Marker({map:o,position:p,icon:im,shadow:sh})
},
initRsbDealer:function(){
	var m=this,g=google.maps,p,mm,im,sh,p1,p2,o,dlr,v=[],vv,u,w
	dlr=G.get(m.servicePath+'?action=dealer&id='+G.middle(location.search,'id=','&')).responseXML
	o=$$('dealer',dlr)[0]
	v.push('<div class="noprint"><a href="javascript:window.print()" class="btnSm" id="printBtnRSB"><b>Print</b></a><a href="javascript:G.map.RouteEmail()" class="btnSm" id="emailBtnRSB"><b>E-mail</b></a><a href="javascript:G.map.GPSExport()" class="btnSm" id="emailBtnRSB"><b>GPS Export</b></a><a href="javascript:G.map.Directions()" class="btnSm" id="emailBtnRSB"><b>Directions</b></a></div>')
	v.push('<p></p>')
	v.push('<div id="dTitle"><h2>'+o.getAttribute('name')+'</h2></div>')
	v.push('<p class="intro">' + o.getAttribute('address')+'<br />'+o.getAttribute('zip')+' '+o.getAttribute('city')+'</p>')
	v.push('<p><strong>Tel: </strong>'+o.getAttribute('phone')+'<br />')
	v.push('<strong>Fax: </strong>'+o.getAttribute('fax')+'<br />')
	w=o.getAttribute('email')
	v.push('<strong>Email: </strong><a href="mailto:'+w+'" title="'+w+'">'+w+'</a>')
	vv=o.getAttribute('website')
	u=m.getLink(vv)
	if(u.indexOf("http://")==-1)
	{u='http://'+u}
	if(vv)v.push('<br /><strong>'+m.websiteBtn+': </strong>'+'<a href="'+ u + '" target="_blank">' + m.getLink(vv) + '</a>')
	v.push('</p>')
	m.addServices(o,v)
	$('rDetail').innerHTML=v.join('')
	h2=$$('h2',$('rDetail'))[0]
	if(h2.offsetHeight>40)h2.style.fontSize='11px'
	p=new g.LatLng(o.getAttribute('lat'),o.getAttribute('lon'))
	m.map=o=new g.Map($('map01'),{zoom:13,center:p,mapTypeId:g.MapTypeId.ROADMAP,disableDefaultUI:false})
	p1=new g.Point(0,0);p2=new g.Point(16.5,41)
	im=new g.MarkerImage(m.icoBase+'markerSP.png',new g.Size(33,41),p1,p2)
	sh=new g.MarkerImage(m.icoBase+'shadow-markerSP.png',new g.Size(54,41),p1,p2)
	m.mark=new g.Marker({map:o,position:p,icon:im,shadow:sh})
},
initPrintRoute:function(){
	var m=this,g=google.maps,p,mm,ds,p,ss=location.search,dlr,o
	m.lat=G.middle(ss,'lat=','&')
	m.lon=G.middle(ss,'lon=','&')
	m.dlKey=G.middle(ss,'id=','&')
	dlr=G.get(m.servicePath+'?action=dealer&id='+G.middle(ss,'id=','&')).responseXML
	o=m.target=$$('dealer',dlr)[0]
	p=m.startLoc=new g.LatLng(m.lat,m.lon)
	p2=o.getAttribute('address')+' '+o.getAttribute('zip')+' '+o.getAttribute('city')
	m.map=new g.Map($('map01'),{zoom:13,center:p,mapTypeId:g.MapTypeId.ROADMAP,disableDefaultUI:false})
	ds=new g.DirectionsService()
	q={origin:p,destination:p2,travelMode:g.DirectionsTravelMode.DRIVING,unitSystem:g.DirectionsUnitSystem.METRIC}
	ds.route(q,function(result,status){
		var m=G.map,g=google.maps,dd,r,v=m.target
		if(status==g.DirectionsStatus.OK){
			dd=new g.DirectionsRenderer()
			dd.setMap(m.map)
			dd.setPanel($('pr_dt'))
			dd.setDirections(result)
			r=result.routes[0].legs[0]
			$('gd1').innerHTML=r.start_address
			$('gd2').innerHTML=m.getAdr(v)
			$('gd3').innerHTML=r.duration.text
			$('gd4').innerHTML=r.distance.text
		}
		else G.map.initPrintRoute2()
	})
},
initPrintRoute2:function(){
	var m=this,g=google.maps,p,mm,ds,p,dlr,o
	o=m.target
	p=m.startLoc
	p2=new g.LatLng(o.getAttribute('lat'),o.getAttribute('lon'))
	ds=new g.DirectionsService()
	q={origin:p,destination:p2,travelMode:g.DirectionsTravelMode.DRIVING,unitSystem:g.DirectionsUnitSystem.METRIC}
	ds.route(q,function(result,status){
		var m=G.map,g=google.maps,dd,r,v=m.target
		if(status==g.DirectionsStatus.OK){
			dd=new g.DirectionsRenderer()
			dd.setMap(m.map)
			dd.setPanel($('pr_dt'))
			dd.setDirections(result)
			r=result.routes[0].legs[0]
			$('gd1').innerHTML=r.start_address
			$('gd2').innerHTML=m.getAdr(v)
			$('gd3').innerHTML=r.duration.text
			$('gd4').innerHTML=r.distance.text
		}
		else alert('Error getting directions: '+status)
	})
},
getAdr:function(a){
	var v=[]
	v.push(a.getAttribute('name'))
	v.push(a.getAttribute('address'))
	v.push(a.getAttribute('zip')+' '+a.getAttribute('city'))
	return v.join(', ')
}
}
