﻿(function(){var 
D=document,E='',F=false,
J=function(a,b){for(var o in b)a[o]=b[o]},
L=function(a){return a.length},M=Math,N,
S=function(a){return $(a).style},T=true,
U=function(a){return a.tagName},W=window,
$=function(a){return(U(a))?a:D.getElementById(a)},
$$=function(a,b){return(b||D).getElementsByTagName(a)},
_=function(){var a=W.XMLHttpRequest,b=W.ActiveXObject;return a?new a():b?new b('Microsoft.XMLHTTP'):N},
G={
gecko:navigator.product=='Gecko',
ie6:(!!document.all && !(typeof window.XMLHttpRequest=='object')),
init:function(){for(var o in G)if(G[o].init)G[o].init()},
set:function(a,b,c){J(a,b);if(c)J(S(a),c);return a},
each:function(a,b,c){for(var i=0;i<L(a);i++)b(a[i],i,a,c)},
repeat:function(a,b,c){for(var i=0;i<a;i++)b(a[i],i,a,c)},
query:function(a){return G.mid(location.search,a+'=','&')},
toQuery:function(a){var v=[],q;for(q in a)v.push(q+'='+a[q]);return v.join('&')},
display:function(a,b){S(a).display=b?'block':'none'},
expand:function(a,b){G.display(a,T)},
collapse:function(a,b){G.display(a,F)},
create:function(a,b,c,d){var o=(d||D).createElement(a);J(o,b);if(c)J(S(o),c);return o},
append:function(a,b,c,d){return $(a).appendChild(U(b)?b:G.create(b,c,d,a.ownerDocument))},
before:function(a,b){return a.parentNode.insertBefore(b,a)},
mid:function(o,a,b){o=o.split(a);return(L(o)<2)?E:o[1].split(b)[0]},
trim:function(a){return a.replace(/^\s+|\s+$/g,E)},
opacity:function(a,b){S(a).opacity=b;S(a).filter='alpha(opacity='+b*100+')'},
time:function(){return new Date().getTime()},
fn:function(a){return(0.5-M.cos(a*M.PI)/2)},
stop:function(a){clearInterval(a);a=N},
random:function(a,b){return M.floor(M.random()*(b-a+1)+a)},
shuffle:function(a){return a.sort(function(a,b){return .5-M.random()})},
get:function(a,b){var o=_();if(b)o.onreadystatechange=function(){var o=this;if(o.readyState==4){if(o.status==200)b(o);else alert("Error:\n"+o.statusText)}};o.open('GET',a,!!b);o.send(N);return o}
};J(W,{G:G,$get:$,$$:$$})})()

G.map={
servicePath:'/site-tools/MapTools.aspx',
icoBase:'/images/',
wPath:'/site-tools/dealer-maps/',
wOpt:'menubar=1,resizable=1,scrollbars=1,width=800,height=600',
init:function(){
	var m=this,v=m.key=G.query('id'),o
	o=m.getService('dealer',{id:v})
	m.processDealer(o)
},
getService:function(a,b,c){
	var m=this;b.action=a
                var stemp = m.servicePath+'?'+G.toQuery(b)+'&all=true'
                return G.get(stemp,c)

},
getDealerFromXml:function(a){
	var o={},os={},x=a.attributes,i,xx=$$('service',a)
	for(i=0;i<x.length;i++)o[x[i].nodeName]=x[i].nodeValue
	for(i=0;i<xx.length;i++)os[xx[i].getAttribute('code')]=xx[i].getAttribute('name')
	o.service=os
	return o
},
processDealer:function(a){
	var m=G.map,x=a.responseXML,xx=$$('dealer',x),o
	if(xx.length!=1){alert('Error in service:\n'+x.xml);return}
	o=m.dealer=m.getDealerFromXml(xx[0])
	m.renderDetail(o)
	m.renderMap(o)
},
renderMap:function(o){
	var m=this,g=google.maps
	m.map=new g.Map($get('rMap'),{center:new g.LatLng(o.lat,o.lon),zoom:14,mapTypeId:g.MapTypeId.ROADMAP})
	m.marker=m.getMarker('',o.lat,o.lon,o.name)
	m.marker.setMap(m.map)
},
getMarker:function(tag,lat,lon,name){
	var m=this,g=google.maps,xt=G.ie6?'.png':'.png',p1=new g.Point(0,0),p2=new g.Point(16.5,41),shadow,image
	xy=new g.LatLng(lat,lon)
	shadow=new g.MarkerImage(m.icoBase+'shadow-markerSP.png',new g.Size(54,41),p1,p2)
 	image=new g.MarkerImage(m.icoBase+'markerSP'+tag+xt,new g.Size(33,41),p1,p2)
	return new g.Marker({position:xy,icon:image,shadow:shadow,title:name})
},
renderDetail:function(o){
	var m=this,v=[],vv,u
	v.push('<div id="dTitle"><h2>'+o.name+'</h2></div>')
	v.push('<p class="intro">')
	v.push(o.address+'<br />'+o.zip+' '+o.city+'</p>')
	v.push('<p><strong>'+m.tel+': </strong>'+o.phone+'<br />')
	v.push('<strong>'+m.fax+': </strong>'+o.fax+'<br />')
	v.push('<strong>'+m.email+': </strong>'+o.email)
                vv = o.website 
                u = m.getLink(vv)

	if(o.website){
                   if (u !='null') {
                    if ((u.indexOf("http://") == -1) && (u.indexOf("/") != 0)) 
                    {
                        u = 'http://' + u
                    }
                    v.push('<br /><strong>'+m.websiteBtn+': </strong><a href="'+u+'" target="_blank" onclick="G.vmc.track()" class="nrm">'+o.website+'</a>')
                    }
                }

	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>')	
	v.push('<a class="btnSm light-grey" href="javascript:G.map.printDetail(\''+m.key+'\')"><b>'+m.printBtn+'</b><i></i></a>')
	v.push('</p>')
	$get('rDetail').innerHTML=v.join('')
},
   getLink: function(a) {
        if  (a!=null){
            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;}
        }else return a
    },
addServices:function(o,v){
	var m=this,i,p,oo=m.cats,q=o.service,vv=[]
	for(i in q)vv.push(i)
	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
	//dcsTrk('WT.pn=print retailer details&WT.si_n=dealerfinder print dealer')
	window.open(m.wPath+'printdealer.aspx?open&id='+a,'',m.wOpt)
},

/* route planner */
startRoute:function(){
	G.expand('getDir')
	dcsTrk('WT.pn=directions form&WT.si_x=3')
},
cancelRoute:function(){G.collapse('getDir');G.collapse('block2b')},
evalRoute:function(){
	var m=G.map,v=$get('fAddress3').value
	if(v==''){$get('errRouteStart').className='error';G.expand('errMsg1');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("Bitte geben Sie eine gültige Adresse ein")}
	})
},
evalStartAddress2:function(a){
	var m=G.map,o,i,oo=$get('fDestination3')
	o=m.routeStart=a
	if(o.length==0){$get('errRouteStart').className='error';G.expand('errMsg1');return}
	$get('errRouteStart').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
	p2=m.marker.getPosition()
	////JPrimmer:Temporary solution: Until Google support for APIv3
	//Remove vars 'orig' and 'bEdit' where used. Remove 'b' and 'c' param from 'displayRoute'
	var bEdit = false;
	var orig = p2;
	var rValue = 'Bolmensvägen 51 120 50 Stockholm - Årsta'
	var rWith = 'Bolmensvägen 53 120 50 Stockholm - Årsta';
	if (p2==rValue){p2=rWith;bEdit=true}
	//\\JPrimmer:Temporary solution
	ds=new g.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,orig,bEdit)
		else alert('Die Adresse konnte nicht gefunden werden.')
	})
},
displayRoute:function(a,b,c){
	////JPrimmer:Temporary solution: Until Google support for APIv3
	if(c){a.trips[0].legs[0].end_geocode.formatted_address = b;}
	//\\JPrimmer:Temporary solution: Until Google support for APIv3
	var m=G.map,dd,g=google.maps
	G.collapse('getDir')
	G.collapse('expGps')
	G.expand('block2b')
	//dcsTrk('WT.pn=directions results&WT.si_x=4')
	m.map=new g.Map($get('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)
	$get('theRoute').innerHTML=''
	dd.setPanel($get('theRoute'))
	dd.setDirections(a)
},
printRoute:function(){
	var m=G.map,a=m.center,b=m.key,v
	v=m.wPath+'printRoute.aspx?open&id='+b+'&lon='+a.lng()+'&lat='+a.lat()
	dcsTrk('WT.pn=print direction&WT.si_x=5')
	window.open(v, '',m.wOpt)
},
getRouteQuery:function(){
	var m=G.map,a=m.center,b=m.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=$get('fEmailFrom').value
	v=v&&m.evalMail('EmailFrom',v2)
	vv.push('from='+encodeURIComponent(v2))
	v2=$get('fEmailTo').value
	v=v&&m.evalMail('EmailTo',v2)
	vv.push('to='+encodeURIComponent(v2))
	v2=$get('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.mid(location.href,'//','/')+m.getRouteQuery()
	vv.push('body='+encodeURIComponent($get('fEmailBody').value+'\n\n'+x))
	r=G.get(vv.join('&')).responseXML
	alert($get('hEmailSuccess').innerHTML)
	m.doSendCancel()
},
evalFilled:function(a,b){var v=(b!='');$get(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})$/)
	$get(a).className=v?'':'error'
	return v
},
doSendCancel:function(){G.collapse('block2c');G.expand('block2b')},
toggleExport:function(){
	var o=$get('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.dealer,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.lon+'&lat='+b.lat+'&name='+b.name
	window.open(v)
	m.toggleExport()
}
}

