var OffsetFactor=0.001497177; // This is calculated from 20(measured factor) / 3.1415927 (PI) / 6378.2 (Earth radius in Km)
var LocImg="/I/USEN_",OldImgN,OldZmN,UA="",ct=1;

function mc(n){return document.MCForm.elements[n];}
function mcv(n){return mc(n).value;}
function MapImg(){return document.MCForm.MapImage;}
function SetUA(i,x,y,z){if(""==UA){UA="&UA="+i+x+y+z+"&gb="+ct;ct++;}}
function ChangeMapSz(i){gMapSize=i;onMapSize();}
function oSzMouseOver(i){if(i.src.indexOf("Zd.gif")>=0)i.src="/I/Zm.gif";else if(i.src.indexOf("MapSzD.gif")>=0)i.src="/I/MapSzM.gif";}
function oSzMouseOut(i){if(i.src.indexOf("Zm.gif")>=0)i.src="/I/Zd.gif";else if(i.src.indexOf("MapSzM.gif")>=0)i.src="/I/MapSzD.gif";}
function oMouseOver(oImgN){MouseOver("/I/",oImgN)}
function oMouseOverL(oImgN){MouseOver(LocImg,oImgN)}
function oMouseOut(){MouseOut("/I/")}
function oMouseOutL(){MouseOut(LocImg)}
function MouseOver(i,n){OldImgN=n;document.MCForm[n].src=i+n+"m.gif";if(!gNavMaps){document.MCForm[n].style.cursor="hand";}}
function MouseOut(i){document.MCForm[OldImgN].src=i+OldImgN+".gif";}
function oZMouseOver(n){OldZmN=n;if("Z"+Alt()!=n)document.MCForm[n].src="/I/Zm.gif";}
function oZMouseOut(){if("Z"+Alt()!=OldZmN)document.MCForm[OldZmN].src="/I/Zd.gif";}

function oPrintMap(){
var P=MapImg().src;var QInd=P.indexOf("?");
if(-1==QInd){RepaintMap();P=MapImg().src;QInd=P.indexOf("?");}
if(-1!=QInd){
P=P.substring(QInd+1);
if(mcv(10).length>0 && mcv(10)!=".")P+="&TI="+mcv(10);
var w=window.open("PrintMap.aspx?"+P,"Print_Map","directories=no,location=no,toolbar=yes,menubar=yes,status=yes,resizable=yes,scrollbars=yes,titlebar=yes");
w.focus();}}

function oPrintRoute(){
var P=MapImg().src;var QInd=P.indexOf("?");
if(-1!=QInd){
P=P.substring(QInd+1);
P+="&IMS="+GetImageString();
var w=window.open("PrintRoute.aspx?"+document.ParamForm.RouteParams.value+"&"+P,"Print_Route","directories=no,location=no,toolbar=yes,menubar=yes,status=yes,resizable=yes,scrollbars=yes,titlebar=yes");
w.focus();}}

function oDlMapToPda(){
var P=MapImg().src;var QInd=P.indexOf("?");
if(-1==QInd){RepaintMap();P=MapImg().src;QInd=P.indexOf("?");}
if(-1!=QInd){
P=P.substring(QInd+1);
if(mcv(10).length>0 && mcv(10)!=".")P+="&TI="+mcv(10);
var w=window.open("PPCMap.aspx?"+P+"&Type=Map","PPCMap","location=no, menubar=yes, resizable=yes, scrollbars=yes, toolbar=yes");
w.focus();}}

function oDlRouteToPda(){
var P=MapImg().src;var QInd=P.indexOf("?");
if(-1!=QInd){
P=P.substring(QInd+1);
P+="&IMS="+GetImageString();
var w=window.open("PPCRoute.aspx?"+document.ParamForm.RouteParams.value+"&"+P,"PPCRoute","location=no, menubar=yes, resizable=yes, scrollbars=yes, toolbar=yes");
w.focus();}}

function oLegend(){
var a=mcv(6),b="";
if(-1!=a.indexOf("WLD"))b="Wld";
else if(-1!=a.indexOf("EUR"))b="Eur";
var w=window.open("/"+b+"MapLegend.aspx","Map_Legend","width=300,height=490,scrollbars=yes,left=480,top=120,screenX=480,screenY=120");
w.focus();}

function oCZoomInt(LT){mc(2).value=LT;SetUA("6",LT,"","");RepaintMap();SetZoomAlt(LT);}
function NewMapLink(){window.scrollBy(0,1000);SetFocusToFind("FndControl_");}
function FixZoom(){SetZoomAlt(Alt());}
function SetScaleImg(){document.MCForm.MapScale.src="/Scale/"+(mcv(6).indexOf("WLD")>-1?"w":"")+gMapSize+Alt()+".gif";}

function SetZoomAlt(ndx){
with(document){
for(i=0;i<11;i++){
var CN="Z"+i;
MCForm[CN].src="/I/Zd.gif";
MCForm[CN].alt=(i<ndx)?"Zoom in":"Zoom out";}
var CN="Z"+ndx;
MCForm[CN].src="/I/Za.gif";
MCForm[CN].alt="Current zoom";
SetScaleImg()}}

function SphereClick(sX, sY, AltI){
var R=(6378.2*MapHeights[gMapSize])/(Alts[AltI]/2.5),vC=[0.0,0.0,0.0];
vC[0]=sX/R;
vC[1]=-sY/R;
if((vC[0]*vC[0]+vC[1]*vC[1])>1.0) return;
vC[2]=Math.sqrt(1-(vC[0]*vC[0]+vC[1]*vC[1]));
var CurLat=-(parseFloat(mcv(0))*0.017453292),CurLon=(parseFloat(mcv(1))*0.017453292),
m1=[Math.cos(CurLon),Math.sin(CurLat)*Math.sin(CurLon),Math.cos(CurLat)*Math.sin(CurLon)],
m2=[0.0,Math.cos(CurLat),-Math.sin(CurLat)],
m3=[-Math.sin(CurLon),Math.sin(CurLat)*Math.cos(CurLon),Math.cos(CurLat)*Math.cos(CurLon)],
vF=[0.0,0.0,0.0];
for(i=0;i<3;i++)vF[0]+=vC[i]*m1[i];
for(i=0;i<3;i++)vF[1]+=vC[i]*m2[i];
for(i=0;i<3;i++)vF[2]+=vC[i]*m3[i];
var FinalLat=Math.asin(vF[1]),FinalLon=Math.atan2(vF[2],vF[0]);
mc(0).value=FinalLat/0.017453292;
var Lon=90-FinalLon/0.017453292;
if(Lon>180)Lon-=360;
mc(1).value=Lon;
if(ZmOnClk())oCZoomIn();else RepaintMap();}

function oCMap(e){
var x=e.OffsetX?e.OffsetX:PosX(e)-51,
y=e.OffsetY?e.OffsetY:PosY(e)-227;
var pX=x-Math.floor(MapWidths[gMapSize]/2),pY=y-Math.floor(MapHeights[gMapSize]/2);
SetUA("5",x,","+y,ZmOnClk()?",1":",0");
SphereClick(pX, pY, Alt());}

function oCPan(X,Y){var A=Alts[Alt()];PanLat(A*OffsetFactor*Y);PanLon(A*OffsetFactor*X);SetUA("4",X,","+Y,"");RepaintMap();}
function PanLat(Y){Y+=parseFloat(mcv(0));if(Y>90)Y=90;if(Y<-90)Y=-90;mc(0).value=Y;}
function PanLon(X){X+=parseFloat(mcv(1));while(X>180){X-=360;}while(X<-180){X+=360;}mc(1).value=X;}
function oCZoomOut(){var A=Alt()+1;if(A>10)A=10;else{mc(2).value=A;SetZoomAlt(A);SetUA("2","","","");RepaintMap();}}
function oCZoomIn(){var A=Alt()-1;if(A<0)A=0;else{mc(2).value=A;SetZoomAlt(A);SetUA("1","","","");}RepaintMap();}

function NavShortCut(Y,X,AI){
mc(1).value=X/10000000;
mc(0).value=Y/10000000;
mc(2).value=AI;
SetZoomAlt(AI);
SetUA("3",Y+",",X+",",AI);
RepaintMap();}

function RepaintMap(){
gebId('mapTagSpan').innerHTML="";
hidePanel(prevPanel);
var url="";
var p=gMIM+mcv(6)+"&C="+mcv(0)+"%2c"+mcv(1)+"&A="+Alts[Alt()]+"&S="+mcv(3)+"%2c"+mcv(4)+mcv(8);
if(mcv(5)!=".")p+="&"+mcv(5);
url=p+UA;
MapImg().src=url;
UA="";
}

function oZmOnClk(cb){StoreInCookie(eZoom,cb.checked?1:0);}
function ZmOnClk(){return mc(12).checked;}
function Alt(){return parseInt(mcv(2));}

function MapWHtoSize(){
for(i=0;i<3;i++)if(mcv(3)==MapWidths[i] && mcv(4)==MapHeights[i])return i;
return 0;}

function GetRouteUrl(OurSite){
var u="http://"+OurSite+"?"+document.ParamForm.RouteParams.value;
u=u.replace(/\|/g ,"%7c");
u=escape(u);
u=u.replace(/\+/g ,"%2B");
return u;}

function EmailRoute(OurSite,SampleEmail,EndName){
var u=GetRouteUrl(OurSite),br="%0D%0A";
u="Driving%20directions"+br+"From:%20%20"+escape(document.ParamForm.FromRoute.value)+br+"To:%20%20"+escape(EndName) +br+br+u+br+br+ "Get%20maps%20and%20driving%20directions%20from%20MSN%20at%20http://maps.msn.com"+br;
window.location.href="mailto:"+SampleEmail+"?subject="+"Driving%20directions%20from%20MSN%20Maps%20%26%20Directions"+"&body="+u;}

function GetMapUrl(OurSite){
var km=Alts[parseInt(mcv(2))];
var u="http://"+OurSite+"?"+"C="+mcv(0)+","+mcv(1)+"&"+mcv(6)+"&A="+km+"&S="+mcv(3)+","+mcv(4)+mcv(8);
if(mcv(5)!=".")u+="&"+mcv(5);
if(mcv(10)!=".")u+="&TI="+mcv(10);
u=u.replace(/\|/g ,"%7c");
u=escape(u);
u=u.replace(/\+/g ,"%2B");
return u;}

function EmailMap(OurSite,SampleEmail){
var u=GetMapUrl(OurSite),br="%0D%0A";
u="Map%20of:%20%20"+escape(mcv(9)) +br+br+u+br+br+ "Get%20maps%20and%20driving%20directions%20from%20MSN%20at%20http://maps.msn.com"+br;
window.location.href="mailto:"+SampleEmail+"?subject="+"Map%20from%20MSN%20Maps%20%26%20Directions"+"&body="+u;}

function CheckMapControl(){
if(mcv(11)=="0")mc(11).value="1";
else{
FixZoom();
if(!gRefreshOnSize){var sz=MapWHtoSize();if(sz!=gMapSize){gMapSize=sz;onMapSize();}}
RepaintMap();}}

function onMapSize(){
var Sel=gMapSize,OldSel=MapWHtoSize();
StoreInCookie(eMapSize,Sel);
if(!gRefreshOnSize){
if(OldSel!=Sel || MapImg().width!=MapWidths[Sel] || MapImg().height!=MapHeights[Sel] || mcv(3)!=MapWidths[Sel] || mcv(4)!=MapHeights[Sel]){
for(j=0;j<3;++j){document.MCForm["MapSz"+j].src="/I/Z"+(j==Sel?"a":"d")+".gif";}
MapImg().width=MapWidths[Sel];
MapImg().height=MapHeights[Sel];
mc(3).value=MapWidths[Sel];
mc(4).value=MapHeights[Sel];
document.all.idResBar.height=MapHeights[Sel]+55;
document.all.idBoxShot.style.visibility=Sel?"visible":"hidden";
document.all.idBoxShot.height=Sel?100:1;
SetScaleImg();
SetUA("7",Sel,"","");
RepaintMap(); }
}else{
var km=Alts[parseInt(mcv(2))];
gMapSize=OldSel;
var P="C="+mcv(0)+"%2c"+mcv(1)+"&"+mcv(6)+"&A="+km+mcv(8)+"&S="+MapWidths[Sel]+"%2c"+MapHeights[Sel];
if(mcv(5)!=".")P+="&"+mcv(5);
if(mcv(10)!=".")P+="&TI="+mcv(10);
window.location.href=gReturnPage+"?"+P;}}

function gebId(n){return document.getElementById(n);}
var prevPanel="";
function hidePanel(n){if(n!=""&&gebId(n)){gebId(n).style.visibility="hidden";prevPanel="";}}

function showPanel(e,n){
if(gebId(n).style.visibility=="visible")return;
hidePanel(prevPanel);
prevPanel=n;
gebId(n).style.left=PosX(e);
gebId(n).style.top=PosY(e);
gebId(n).style.visibility="visible";
}
function PosX(e){return e.pageX?e.pageX:e.clientX+document.body.scrollLeft;}
function PosY(e){return e.pageY?e.pageY:e.clientY+document.body.scrollTop;}

function updateMap(){
if(gebId("brandScript")){
var u="BrandAreasJS.aspx",s=MapImg().src;
var i=s.indexOf("?");
if(i>0)u+=s.substring(i,s.length);
gebId("brandScript").src=u;
}}
