/* 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
fix fr zipcode for orange
*/

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,'Уполномоченный Партнер "Юто Карс"@Калининград')

//fr place
v=v.replace(/Orange/gi,'84100')

//ch places
v=v.replace(/Vallon/gi,'1565')

//fr place
v=v.replace(/Orange/gi,'84100')


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){};try{window.top.G.cta.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(', ')
}
}
