/*
 * Multiple Maps Class
 * @author Firejune(to@firejune.com)
 * @license MIT-style license
 * @version 0.9.2a
 * 
 * requires
 *   - prototype 1.6.0+ <http://www.prototypejs.org>
 *
 * TransCoordinator code form DAUM map API
 * @author daum.net
 * @license unknown
 * @version unknown
 *
 * @copyright author(s)
 *
 */
if(!window.debug)debug=Prototype.emptyFunction;var Maps=Class.create({initialize:function(element,options){element=$(element);if(!element)throw new Error('element is undefined');this.version='092a';this.element=element.setStyle({overflow:'hidden',position:'relative',padding:0});this.options=Object.extend({type:'google',key:'',coords:{y:37.52,x:126.99,z:13},framesrc:'',callback:Prototype.emptyFunction,width:this.element.getWidth()||300,height:this.element.getHeight()||300,zoomwheel:true,zoomslide:'LargeMap',showMapTypes:true,minimap:false,geocoder:false,directions:false},options||{});this.src={naver:'http://maps.naver.com/js/naverMap.naver?key=',daum:'http://apis.daum.net/maps/maps.js?apikey=',google:'http://maps.google.com/maps?file=api&v=2.x&hl=ko&async=1&sensor=true&key=',google3:'http://maps.gstatic.com/intl/ko_ALL/mapfiles/api-3/10/main.js#'}[this.options.type];if(!this.options.framesrc){this.win=window;this.doc=document;this.callAPIScript();}else this.setFrame();},get:function(name){return this.win[this.options.type.substring(0,1).toUpperCase()+name];},getAPIVersion:function(){return{'google':this.win.G_API_VERSION,'daum':'unknown','naver':'unknown'}[this.options.type];},createPolyline:function(polylines,color,a,b){this.map.addOverlay(new this.win[{naver:'NPolyline',daum:'DPolyline',google:'GPolyline',google3:''}[opt.type]](polylines,color,a,b));},createBubble:function(marker,contents,opt){opt=Object.extend({type:this.options.type},opt||{});if(typeof contents!='string'&&contents.length){var infoWindowTab=this.win[{naver:'NInfoWindowTab',daum:'DInfoWindowTab',google:'GInfoWindowTab',google3:''}[opt.type]];contents.each(function(item){items.push(new infoWindowTab(item.tab,item.content));});marker.openInfoWindowTabsHtml(items);}else
marker.openInfoWindowHtml(contents);},createMarker:function(coord,opt){opt=Object.extend({type:this.options.type,draggable:false,icon:this.createIcon('default'),panning:true,contents:null,dragstart:Prototype.emptyFunction,dragend:Prototype.emptyFunction,click:Prototype.emptyFunction},opt||{});var marker=new this.win[{naver:'NMarker',daum:'DMarker',google:'GMarker',google3:''}[opt.type]](coord,opt);this.map.addOverlay(marker);if(opt.panning)this.map.panTo(coord);var event=this.win[{naver:'NEvent',daum:'DEvent',google:'GEvent',google3:''}[opt.type]];event.addListener(marker,"click",opt.click);if(opt.draggable){event.addListener(marker,"dragstart",opt.dragstart);event.addListener(marker,"dragend",opt.dragend);}
if(opt.contents)this.createBubble(marker,opt.contents);return marker;},createIcon:function(src,opt){opt=Object.extend({type:this.options.type,size:[20,34],anchor:[9,34],shadowable:false,ssize:[37,34],sanchor:[18,25],wanchor:[9,2]},opt||{});if(opt.type=='google'&&(!src||!src.match(/\./)))return this.win['G_'+(src||'default').toUpperCase()+'_ICON'];var icon=new this.win[{naver:'NIcon',daum:'DIcon',google:'GIcon',google3:''}[opt.type]]();icon.image=src;icon.iconSize=new this.win.GSize(opt.size[0],opt.size[1]);icon.iconAnchor=new this.win.GPoint(opt.anchor[0],opt.anchor[1]);if(opt.shadowable){icon.shadow='/images/gshadow.png';icon.shadowSize=new this.win.GSize(opt.ssize[0],opt.ssize[1]);icon.infoShadowAnchor=new this.win.GPoint(opt.sanchor[0],opt.sanchor[1]);icon.infoWindowAnchor=new this.win.GPoint(opt.wanchor[0],opt.wanchor[1]);}
return icon;},createGoogleMap:function(){if(!this.win.GBrowserIsCompatible())return this.win.alert("Sorry, the Google Maps API is not compatible with this browser");this.map=new this.win.GMap2(this.doc.getElementById(this.element.id),{mapTypes:this.options.showMapTypes?[this.win.G_HYBRID_MAP,this.win.G_NORMAL_MAP,this.win.G_SATELLITE_MAP]:null});if(this.options.showMapTypes){var hierarchy=new this.win.GHierarchicalMapTypeControl(true,false);hierarchy.addRelationship(this.win.G_SATELLITE_MAP,this.win.G_HYBRID_MAP,null,true);this.map.addControl(hierarchy);this.map.addMapType(this.win.G_PHYSICAL_MAP);}
if(this.options.zoomslide)this.map.addControl(new this.win['G'+this.options.zoomslide+'Control']());if(this.options.zoomwheel)this.map.enableScrollWheelZoom();if(this.options.minimap){var minimap=new this.win.GOverviewMapControl(new this.win.GSize(200,200));this.map.addControl(minimap);minimap.hide.bind(minimap).delay(2);}
this.map.setCenter(new this.win.GLatLng(this.options.coords.y,this.options.coords.x),this.options.coords.z);this.map.enableContinuousZoom();this.map.reasons={400:"A directions request could not be successfully parsed.",500:"서버 에러 - 정보 지정 요청을 성공적으로 처리하지 못했습니다.",601:"누락된 주소 - 주소가 없거나 빠져있습니다.",602:"알 수 없는 주소 -  지리적 위치에 해당하는 지역에 지정된 주소를 찾을 수없습니다.",603:"확인할 수 없는 주소 - 위치 정보를 제공 주소는 법적 또는 계약상상의 이유로 결과가 반환되지 않았습니니다.",604:"The GDirections object could not compute directions between the points.",610:"잘못된 키 - API 키가 올바르지 않거나 주어진이있는 도메인이 일치하지 않습니다.",620:"쿼리가 너무 많음 - 이 사이트에 대한  하루 정보 할당량을 초과했습니다."};if(this.options.geocoder)this.map.geo=new this.win.GClientGeocoder(null,this.options.key);if(this.options.directions){this.map.dirn=new this.win.GDirections(this.map,null);}},createGoogle3Map:function(){this.map=new this.win.google.maps.Map(this.doc.getElementById(this.element.id),{zoom:this.options.coords.z,navigationControl:true,scaleControl:true,center:new this.win.google.maps.LatLng(this.options.coords.y,this.options.coords.x),mapTypeId:this.win.google.maps.MapTypeId.HYBRID});},createDaumMap:function(){this.map=new this.win.DMap(this.element.id,{width:this.options.width,height:this.options.height,point:new this.win.DPoint(this.options.coords.x,this.options.coords.y),coordinate:'congnamul',level:this.options.coords.z});if(this.options.zoomslide)this.map.addControl(new this.win.DZoomControl());if(this.options.minimap){var index=new this.win.DIndexMapControl();this.map.addControl(index);index.hideFromButton({});}
if(this.options.zoomwheel)this.map.enableScrollWheelZoom();},createNaverMap:function(){this.map=new this.win.NMap(this.doc.getElementById(this.element.id),this.options.width,this.options.height);this.map.setCenterAndZoom(new this.win.NPoint(this.options.coords.x,this.options.coords.y),this.options.coords.z);if(this.options.zoomwheel)this.map.enableWheelZoom();if(this.options.zoomslide){var zoom=new this.win.NZoomControl();zoom.setAlign('left');zoom.setValign('top');this.map.addControl(zoom);}
if(this.options.minimap){var index=new this.win.NIndexMap();index.setAlign('right');index.setValign('bottom');this.map.addControl(index);index.hideIMap();}},callAPIScript:function(src){var timer=null,fire=function(){if(timer)window.clearInterval(timer);if(script&&script.remove)script.remove();if(this.options.type=='google'&&!this.win.GMap2){var opts={zoom_override:[{country:"kr",maptype:1,override:[{rect:{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},max_zoom:15},{rect:{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},max_zoom:15},{rect:{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},max_zoom:15},{rect:{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}},max_zoom:15}]},{country:"kr",maptype:2,override:[{rect:{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},max_zoom:15},{rect:{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},max_zoom:15},{rect:{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},max_zoom:15},{rect:{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}},max_zoom:15}]}],tile_override:[{maptype:0,min_zoom:7,max_zoom:7,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:366500000,lng_e7:1297000000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26"],mapprint_url:"http://www.gmaptiles.co.kr/mapprint"},{maptype:0,min_zoom:8,max_zoom:9,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1279600000}},{lo:{lat_e7:345000000,lng_e7:1279600000},hi:{lat_e7:386200000,lng_e7:1286700000}},{lo:{lat_e7:348900000,lng_e7:1286700000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:354690000,lng_e7:1293600000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26"],mapprint_url:"http://www.gmaptiles.co.kr/mapprint"},{maptype:0,min_zoom:10,max_zoom:18,rect:[{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1.11\x26hl=ko\x26"],mapprint_url:"http://www.gmaptiles.co.kr/mapprint"},{maptype:3,min_zoom:7,max_zoom:7,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:366500000,lng_e7:1297000000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26"]},{maptype:3,min_zoom:8,max_zoom:9,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1279600000}},{lo:{lat_e7:345000000,lng_e7:1279600000},hi:{lat_e7:386200000,lng_e7:1286700000}},{lo:{lat_e7:348900000,lng_e7:1286700000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:354690000,lng_e7:1293600000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26"]},{maptype:3,min_zoom:10,rect:[{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1p.11\x26hl=ko\x26"]},{country:"kr",maptype:2,min_zoom:7,max_zoom:7,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:366500000,lng_e7:1297000000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26"]},{country:"kr",maptype:2,min_zoom:8,max_zoom:9,rect:[{lo:{lat_e7:330000000,lng_e7:1246050000},hi:{lat_e7:386200000,lng_e7:1279600000}},{lo:{lat_e7:345000000,lng_e7:1279600000},hi:{lat_e7:386200000,lng_e7:1286700000}},{lo:{lat_e7:348900000,lng_e7:1286700000},hi:{lat_e7:386200000,lng_e7:1293600000}},{lo:{lat_e7:354690000,lng_e7:1293600000},hi:{lat_e7:386200000,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26"]},{country:"kr",maptype:2,min_zoom:10,rect:[{lo:{lat_e7:329890840,lng_e7:1246055600},hi:{lat_e7:386930130,lng_e7:1284960940}},{lo:{lat_e7:344646740,lng_e7:1284960940},hi:{lat_e7:386930130,lng_e7:1288476560}},{lo:{lat_e7:350277470,lng_e7:1288476560},hi:{lat_e7:386930130,lng_e7:1310531620}},{lo:{lat_e7:370277730,lng_e7:1310531620},hi:{lat_e7:386930130,lng_e7:1320034790}}],uris:["http://mt0.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt1.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt2.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26","http://mt3.gmaptiles.co.kr/mt/v=kr1t.11\x26hl=ko\x26"]}],jsmain:"http://maps.gstatic.com/intl/ko_kr/mapfiles/207a/maps2.api/main.js",bcp47_language_code:"ko-KR",log_info_window_ratio:0,log_fragment_count:10,log_fragment_seed:1};var jslinker={version:"182",jsbinary:[{id:"maps2",url:"http://maps.gstatic.com/intl/ko_kr/mapfiles/207a/maps2/main.js"},{id:"maps2.api",url:"http://maps.gstatic.com/intl/ko_kr/mapfiles/207a/maps2.api/main.js"},{id:"gc",url:"http://maps.gstatic.com/intl/ko_kr/mapfiles/207a/gc.js"},{id:"suggest",url:"http://maps.gstatic.com/intl/ko_kr/mapfiles/207a/suggest/main.js"},{id:"pphov",url:"http://maps.gstatic.com/intl/ko_kr/mapfiles/207a/pphov.js"}]};this.win.GLoad=function(callback){var callee=arguments.callee;var apiCallback=callback;this.win.GApiInit();var jsinit=this.win.GJsLoaderInit;jsinit&&jsinit(opts.jsmain);var pageArgs={};apiCallback(["http://mt0.google.com/vt/lyrs\x3dm@115\x26hl\x3dko\x26","http://mt1.google.com/vt/lyrs\x3dm@115\x26hl\x3dko\x26"],["http://khm0.google.co.kr/kh/v\x3d50\x26","http://khm1.google.co.kr/kh/v\x3d50\x26"],["http://mt0.google.com/vt/lyrs\x3dh@115\x26hl\x3dko\x26","http://mt1.google.com/vt/lyrs\x3dh@115\x26hl\x3dko\x26"],"","","",false,"G",opts,["http://mt0.google.com/vt/v\x3dw2p.115\x26hl\x3dko\x26","http://mt1.google.com/vt/v\x3dw2p.115\x26hl\x3dko\x26"],jslinker,pageArgs);if(!callee.called){callee.called=true;}}.bind(this);return this.callAPIScript(opts.jsmain);}
this['create'+this.options.type.capitalize()+'Map']();this.options.callback(this.map,this.win,this);debug(this.map,' map API initialized');Maps.state='complete';}.bind(this);if(this.options.type=='google3'&&!this.win.google.maps){this.win.google=this.win.google||{};this.win.google.maps=this.win.google.maps||{};var loadScriptTime=(new Date).getTime();this.win.google.maps.Load=function(apiLoad){apiLoad([[,,,1,,"ko"],[[["http://mt0.google.com/vt/v=ap.95&hl=ko&","http://mt1.google.com/vt/v=ap.95&hl=ko&","http://mt2.google.com/vt/v=ap.95&hl=ko&","http://mt3.google.com/vt/v=ap.95&hl=ko&"],"Map data &#169;2009 ","ap.95"],[["http://khm0.google.com/kh/v=43&hl=ko&","http://khm1.google.com/kh/v=43&hl=ko&","http://khm2.google.com/kh/v=43&hl=ko&","http://khm3.google.com/kh/v=43&hl=ko&"],"Imagery &#169;2009 ","43"],[["http://mt0.google.com/vt/v=apt.95&hl=ko&imgtp=png32&","http://mt1.google.com/vt/v=apt.95&hl=ko&imgtp=png32&","http://mt2.google.com/vt/v=apt.95&hl=ko&imgtp=png32&","http://mt3.google.com/vt/v=apt.95&hl=ko&imgtp=png32&"],"Imagery &#169;2009 ","apt.95"],[["http://mt0.google.com/mt/v=app.87&hl=ko&","http://mt1.google.com/mt/v=app.87&hl=ko&","http://mt2.google.com/mt/v=app.87&hl=ko&","http://mt3.google.com/mt/v=app.87&hl=ko&"],"Imagery &#169;2009 ","app.87"],"fzwq1BXnzhGDAA60dCz1GPhbvXyo3O39TUdmmA"],["ko","","google.com",,,"http://maps.google.com/maps","http://maps.gstatic.com/intl/ko_ALL/mapfiles/","http://gg.google.com"],["http://maps.gstatic.com/intl/ko_ALL/mapfiles/api-3/10"],[3652059080],1],loadScriptTime);}.bind(this);}
Maps.state=='running';var duplicate=null,script=this.doc.createElement('script');script.type='text/javascript';script.src=src||this.src+this.options.key;Maps.files.each(function(js){if(js.src==script.src&&js.ownerDocument==script.ownerDocument){duplicate=true;throw $break;}});if(duplicate&&Maps.state!='complete')return setTimeout(function(){debug.warn('duplicate maps API script, automatically retrying...');this.callAPIScript(script.src);}.bind(this),100);(this.doc.getElementsByTagName('head')[0]||this.doc.body).appendChild(script);Maps.files.push(script);debug(script,'appended');if(Prototype.Browser.IE)script.onreadystatechange=function(){/loaded|complete/.test(script.readyState)&&fire();}
else script.onload=fire;},parseHTML:function(event,id){this.win=$(id).contentWindow||window.frames[id];this.doc=this.win.document;debug._win=this.win;if(Prototype.Browser.Gecko){this.doc.open();this.doc.write(['<html><head>','<title>',this.options.type.capitalize(),' Maps API</title>','<meta http-equiv="Content-Language" content="ko"/>','<meta http-equiv="imagetoolbar" content="no"/>','</head><body></body></html>'].join('\n'));this.doc.close();}
this.doc.body.innerHTML='<div id="'+this.element.id+'" style="width:'+this.options.width+'px;height:'+this.options.height+'px"></div>';this.callAPIScript();},setFrame:function(){var id='f'+Math.floor(Math.random()*99999);var frame=new Element('iframe',{id:id,name:id,src:'/'+this.options.framesrc}).setStyle({border:0,width:this.options.width+'px',height:this.options.height+'px'}).observe('load',this.parseHTML.bindAsEventListener(this,id));frame.setAttribute("scrolling","no");frame.setAttribute("frameBorder","0");frame.setAttribute("marginWidth","0");frame.setAttribute("marginHeight","0");frame.setAttribute("allowTransparency","auto");this.element.update(frame);}});Object.extend(Maps,{state:'idle',files:[],getCoordType:function(type){return{daum:'cong',naver:'ktm',google:'wgs84'}[type];},toKM:function(m,s){if(m<1000&&!s)return parseFloat(m.toFixed(1))+'m';m=(m*0.001);if(m>1260&&s)return'Mach '+(m/1225).toFixed(1);return parseFloat(m.toFixed(1))+'km';},getPointAtDistance:function(metres,poly,win){if(!win)win=window;if(metres==0)return poly.getVertex(0);if(metres<0)return null;var dist=0;var olddist=0;for(var i=1;(i<poly.getVertexCount()&&dist<metres);i++){olddist=dist;dist+=poly.getVertex(i).distanceFrom(poly.getVertex(i-1));}
if(dist<metres)return null;var p1=poly.getVertex(i-2);var p2=poly.getVertex(i-1);var m=(metres-olddist)/(dist-olddist);return new win.GLatLng(p1.lat()+(p2.lat()-p1.lat())*m,p1.lng()+(p2.lng()-p1.lng())*m);},transCoord:function(coords,fromType,toType){if(fromType==toType)return coords;if(fromType.match(/daum/)&&toType.match(/google|naver/))coords.z-=1;if(fromType.match(/daum|naver/)&&toType.match(/google/))Object.extend(coords,{z:this.kzToGz(coords.z)});if(fromType.match(/google/)&&toType.match(/daum|naver/))Object.extend(coords,{z:this.gzToKz(coords.z)});if(fromType.match(/google|naver/)&&toType.match(/daum/))coords.z+=1;var coord=Maps.TransCoordinator.getTransCoord(coords,this.getCoordType(fromType),this.getCoordType(toType));return Object.extend(coords,toType=='naver'?{x:Math.round(coord.x),y:Math.round(coord.y)}:coord);},kzToGz:function(z){return(z==1)?17:this.kzToGz(z-1)-1},gzToKz:function(z){if(z>17)z=17;if(z<7)z=7;return(z==17)?1:this.gzToKz(z+1)+1;}});Maps.Route=Class.create({initialize:function(url,options){this.options=Object.extend({map:options.instance.map||null,win:options.instance.win||null,callback:Prototype.emptyFunction},options||{});var onFailure=function(){this.options.callback(null);}.bind(this);new Ajax.Request(url,{method:'get',onSuccess:function(req){if(!(req.responseXML||req.responseJSON))return onFailure();this.options.callback(req.responseJSON||this.xmlToJSON(req.responseXML.documentElement));}.bind(this),onFailure:onFailure});},xmlToJSON:function(doc){var route={links:[],nodes:[]};var getSection=function(node){if(node.nodeName=="rout:link"){var points=[],pointNode=node.firstChild,makeObj=function(x,y){points.push({x:parseInt(x),y:parseInt(y)});};if(pointNode.nodeName=="rout:point")makeObj(pointNode.getAttribute("x"),pointNode.getAttribute("y"));else if(pointNode.nodeName=="rout:points")pointNode[Prototype.Browser.IE?'text':'textContent'].split(' ').each(function(value){if(value.match(','))makeObj(value.split(',')[0],value.split(',')[1]);});route.links.push({name:node.getAttribute("name"),dist:parseInt(node.getAttribute("length")),roadnum:parseInt(node.getAttribute("roadnum")),points:points});}else if(node.nodeName=="rout:node"){route.nodes.push({name:node.getAttribute("name"),x:parseInt(node.getAttribute("x")),y:parseInt(node.getAttribute("y")),rotation:parseInt(node.getAttribute("rotation")),routeinfo:node.getAttribute("routeinfo")});}};route.success=(doc.getAttribute("success")=="true");for(var i=0;i<doc.childNodes.length;i++){if(doc.childNodes[i].nodeName=="rout:section"){var childNodes=doc.childNodes[i].childNodes;for(var j=0;j<childNodes.length;j++)getSection(childNodes[j]);}}
return route;}});Maps.Earth=Class.create({initialize:function(ge,win){this.ge=ge;},createRoutePlacemark:function(polyline){var polylineIndex=polyline.getVertexCount()-1,kml=[];for(var i=0;i<=polylineIndex;i++){var loc=polyline.getVertex(i);kml.push(loc.lng().toString()+','+loc.lat().toString()+',10');}
var routeLineString=this.ge.parseKml(['<LineString><coordinates>',kml.join('\n'),'</coordinates></LineString>'].join('\n'));routeLineString.setTessellate(true);var routePlacemark=this.ge.createPlacemark('');routePlacemark.setGeometry(routeLineString);routePlacemark.setStyleSelector(this.createLineStyle({width:10,color:'88ff0000'}));this.ge.getFeatures().appendChild(routePlacemark);return routePlacemark;},createPointPlacemark:function(loc,opts){var placemark=this.ge.createPlacemark(opts.id?opts.id:'');if(opts.name)placemark.setName(opts.name);if(opts.description)placemark.setDescription(opts.description);if(opts.standardIcon&&!opts.icon)opts.icon='http://firejune.com/kml/'+opts.standardIcon+'.png';if(opts.icon){var icon=this.ge.createIcon('');icon.setHref(opts.icon);var iconStyle=this.ge.createStyle('');iconStyle.getIconStyle().setIcon(icon);var styleMap=this.ge.createStyleMap('');styleMap.setNormalStyle(iconStyle);styleMap.setHighlightStyle(iconStyle);placemark.setStyleSelector(styleMap);}
var point=this.ge.createPoint('');point.setLatitude(loc.lat());point.setLongitude(loc.lng());placemark.setGeometry(point);this.ge.getFeatures().appendChild(placemark);return placemark;},clearFeatures:function(){var features=this.ge.getFeatures(),c;while(c=features.getLastChild())features.removeChild(c);},removeFeature:function(id){var features=this.ge.getFeatures();var c=features.getFirstChild();while(c){if(c.getId()==id){features.removeChild(c);break;}
c=c.getNextSibling();}},createLineStyle:function(opts){var style=this.ge.createStyle('');var lineStyle=style.getLineStyle();if(opts.width)lineStyle.setWidth(opts.width);if(opts.color)lineStyle.getColor().set(opts.color);return style;},getHeading:function(loc1,loc2){var lat1=loc1.y*Math.PI/180,lon1=loc1.x;var lat2=loc2.y*Math.PI/180,lon2=loc2.x;var dLon=(lon2-lon1)*Math.PI/180;var y=Math.sin(dLon)*Math.cos(lat2);var x=Math.cos(lat1)*Math.sin(lat2)-Math.sin(lat1)*Math.cos(lat2)*Math.cos(dLon);return(Math.atan2(y,x)*180/Math.PI+360)%360;},fixAngle:function(a){while(a<-180)a+=360;while(a>180)a-=360;return a;},interpolateLoc:function(loc1,loc2,f){return new GLatLng(loc1.lat()+f*(loc2.lat()-loc1.lat()),loc1.lng()+f*(loc2.lng()-loc1.lng()));}});Maps.TransCoordinator=new(Class.create({initialize:function(){this.BASE_TM_LON=127;this.BASE_TM_LAT=38;this.BASE_KTM_LON=128;this.BASE_KTM_LAT=38;this.m_AW=6378137;this.m_FW=1/298.257223563;this.m_AB=6377397.155;this.m_FB=1/299.152813;this.m_OKKTM=1;this.m_OKGTM=0.9999;this.m_TX=115.8;this.m_TY=-474.99;this.m_TZ=-674.11;this.m_TOMEGA=1.16;this.m_TPHI=-2.31;this.m_TKAPPA=-1.63;this.m_TS=-6.43;this.m_TMODE=1;this.m_x0=500000;this.m_y0=200000;this.m_x1=600000;this.m_y1=400000;this.m_dx=0;this.m_dy=0;this.m_dz=0;this.m_omega=0;this.m_phi=0;this.m_kappa=0;this.m_ds=0;this.m_imode=0;this.deltaValue1=[[0,50000],[0,50000],[0,10000],[-70378,-136],[-144738,-2161],[23510,-111]];this.deltaValue2=[[0,-50000],[0,-50000],[0,-10000],[70378,136],[144738,2161],[-23510,111]];this.rectArray1=[{x:112500,y:-50000,w:146000-112500,h:3000+50000},{x:146000,y:-50000,w:200000-146000,h:8600+50000},{x:130000,y:44000,w:145000-130000,h:58000-44000},{x:532500,y:437500,w:557500-532500,h:462500-437500},{x:625000,y:412500,w:650000-625000,h:437500-412500},{x:-12500,y:462500,w:5000+12500,h:512500-462500}];this.rectArray2=[{},{},{},{},{},{}];for(var i=0;i<this.rectArray1.length;i++){this.rectArray2[i].x=this.rectArray1[i].x+this.deltaValue1[i][0];this.rectArray2[i].y=this.rectArray1[i].y+this.deltaValue1[i][1];this.rectArray2[i].w=this.rectArray1[i].w;this.rectArray2[i].h=this.rectArray1[i].h;}},getTransCoord:function(destPoint,fromType,toType){var transCoord=this.convertCoord(destPoint.x||destPoint.longitude,destPoint.y||destPoint.latitude,fromType,toType);return{y:transCoord[1],x:transCoord[0]};},convertCoord:function(dwX,dwY,fromType,toType){return{'ktm':this.convertKtmTo.bind(this),'wgs84':this.convertWgsTo.bind(this),'bessel':this.convertBesselTo.bind(this),'cong':this.convertCongTo.bind(this),'wcong':this.convertWcongTo.bind(this)}[fromType](dwX,dwY,toType);},convertKtmTo:function(dwX,dwY,toType){return{'ktm':this.createXY.bind(this),'wgs84':function(dwX,dwY){var ret=this.convertKtmToBessel(dwX,dwY);return this.convertBesselToWgs(ret[0],ret[1]);}.bind(this),'bessel':this.convertKtmToBessel.bind(this),'cong':function(dwX,dwY){var ret=this.convertKtmToBessel(dwX,dwY);return this.convertBesselToCong(ret[0],ret[1]);}.bind(this),'wcong':function(dwX,dwY){var ret=this.convertKtmToBessel(dwX,dwY);ret=this.convertBesselToWgs(ret[0],ret[1]);return this.convertWgsToWcong(ret[0],ret[1]);}.bind(this)}[toType](dwX,dwY);},convertWgsTo:function(dwX,dwY,toType){return{'ktm':function(dwX,dwY){var ret=this.convertWgsToBessel(dwX,dwY);return this.convertBesselToKtm(ret[0],ret[1]);}.bind(this),'wgs84':this.createXY.bind(this),'bessel':this.convertWgsToBessel.bind(this),'cong':function(dwX,dwY){var ret=this.convertWgsToBessel(dwX,dwY);return this.convertBesselToCong(ret[0],ret[1]);}.bind(this),'wcong':this.convertWgsToWcong.bind(this)}[toType](dwX,dwY);},convertBesselTo:function(dwX,dwY,toType){return{'ktm':this.convertBesselToKtm.bind(this),'wgs84':this.convertBesselToWgs.bind(this),'bessel':this.createXY.bind(this),'cong':this.convertBesselToCong.bind(this),'wcong':function(dwX,dwY){var ret=this.convertBesselToWgs(dwX,dwY);return this.convertWgsToWcong(ret[0],ret[1]);}.bind(this)}[toType](dwX,dwY);},convertCongTo:function(dwX,dwY,toType){return{'ktm':function(dwX,dwY){var ret=this.convertCongToBessel(dwX,dwY);return this.convertBesselToKtm(ret[0],ret[1]);}.bind(this),'wgs84':function(dwX,dwY){var ret=this.convertCongToBessel(dwX,dwY);return this.convertBesselToWgs(ret[0],ret[1]);}.bind(this),'bessel':this.convertCongToBessel.bind(this),'cong':this.createXY.bind(this),'wcong':function(dwX,dwY){var ret=this.convertCongToBessel(dwX,dwY);ret=this.convertBesselToWgs(ret[0],ret[1]);return this.convertWgsToWcong(ret[0],ret[1]);}.bind(this)}[toType](dwX,dwY);},convertWcongTo:function(dwX,dwY,toType){return{'ktm':function(dwX,dwY){var ret=this.convertWcongToWgs(dwX,dwY);ret=this.convertWgsToBessel(ret[0],ret[1]);return this.convertBesselToKtm(ret[0],ret[1]);}.bind(this),'wgs84':function(dwX,dwY){return this.convertWcongToWgs(dwX,dwY);ret=this.convertWgsToBessel(ret[0],ret[1]);return this.convertBesselToWgs(ret[0],ret[1]);}.bind(this),'bessel':function(dwX,dwY){var ret=this.convertWcongToWgs(dwX,dwY);return this.convertWgsToBessel(ret[0],ret[1]);}.bind(this),'cong':function(dwX,dwY){var ret=this.convertWcongToWgs(dwX,dwY);ret=this.convertWgsToBessel(ret[0],ret[1]);return this.convertBesselToCong(ret[0],ret[1]);}.bind(this),'wcong':this.createXY.bind(this)}[toType](dwX,dwY);},convertBesselToKtm:function(x,y){return this.changeXY(this.GP2TM(y,x,this.m_AB,this.m_FB,this.m_x1,this.m_y1,this.m_OKGTM,this.BASE_KTM_LAT,this.BASE_KTM_LON));},convertBesselToWgs:function(x,y){this.setParameter(this.m_TX,this.m_TY,this.m_TZ,this.m_TOMEGA,this.m_TPHI,this.m_TKAPPA,this.m_TS,this.m_TMODE);return this.changeXY(this.GP2WGP(y,x,0,this.m_AB,this.m_FB));},convertBesselToCong:function(x,y){var xy=this.changeXY(this.GP2TM(y,x,this.m_AB,this.m_FB,this.m_x0,this.m_y0,this.m_OKKTM,this.BASE_TM_LAT,this.BASE_TM_LON+10.405/3600));return this.shiftIsland(xy[0],xy[1],true);},convertWgsToBessel:function(x,y){this.setParameter(this.m_TX,this.m_TY,this.m_TZ,this.m_TOMEGA,this.m_TPHI,this.m_TKAPPA,this.m_TS,this.m_TMODE);return this.changeXY(this.WGP2GP(y,x,0,this.m_AB,this.m_FB));},convertWgsToWcong:function(x,y){var xy=this.changeXY(this.GP2TM(y,x,this.m_AW,this.m_FW,this.m_x0,this.m_y0,this.m_OKKTM,this.BASE_TM_LAT,this.BASE_TM_LON));xy[0]=Math.round(xy[0]*2.5);xy[1]=Math.round(xy[1]*2.5);return xy;},convertKtmToBessel:function(x,y){return this.changeXY(this.TM2GP(y,x,this.m_AB,this.m_FB,this.m_x1,this.m_y1,this.m_OKGTM,this.BASE_KTM_LAT,this.BASE_KTM_LON));},convertCongToBessel:function(x,y){var xy=this.shiftIsland(x,y,false);return this.changeXY(this.TM2GP(xy[1],xy[0],this.m_AB,this.m_FB,this.m_x0,this.m_y0,this.m_OKKTM,this.BASE_TM_LAT,this.BASE_TM_LON+10.405/3600));},convertWcongToWgs:function(x,y){var xy=[x/2.5,y/2.5];return this.changeXY(this.TM2GP(xy[1],xy[0],this.m_AW,this.m_FW,this.m_x0,this.m_y0,this.m_OKKTM,this.BASE_TM_LAT,this.BASE_TM_LON));},changeXY:function(xy){return[xy[1],xy[0]];},createXY:function(x,y){return[x,y];},shiftIsland:function(dwX,dwY,bToCong){var deltaX=0,deltaY=0,convValue=[];if(bToCong){for(var i=0;i<this.rectArray1.length;i++){if(((dwX-this.rectArray1[i].x)>=0)&&((dwX-this.rectArray1[i].x)<=this.rectArray1[i].w)&&((dwY-this.rectArray1[i].y)>=0)&&((dwY-this.rectArray1[i].y)<=this.rectArray1[i].h)){deltaX+=this.deltaValue1[i][0];deltaY+=this.deltaValue1[i][1];break;}}
convValue[0]=parseInt((dwX+deltaX)*2.5+0.5);convValue[1]=parseInt((dwY+deltaY)*2.5+0.5);}else{convValue[0]=dwX/2.5;convValue[1]=dwY/2.5;for(var i=0;i<this.rectArray2.length;i++){if(((convValue[0]-this.rectArray2[i].x)>=0)&&((convValue[0]-this.rectArray2[i].x)<=this.rectArray2[i].w)&&((convValue[1]-this.rectArray2[i].y)>=0)&&((convValue[1]-this.rectArray2[i].y)<=this.rectArray2[i].h)){convValue[0]+=this.deltaValue2[i][0];convValue[1]+=this.deltaValue2[i][1];break;}}}
return convValue;},setParameter:function(dx,dy,dz,omega,phi,kappa,ds,imode){var degrad=Math.atan(1)/45;this.m_dx=dx;this.m_dy=dy;this.m_dz=dz;this.m_omega=omega/3600*degrad;this.m_phi=phi/3600*degrad;this.m_kappa=kappa/3600*degrad;this.m_ds=ds*0.000001;this.m_imode=imode;},TransMolod:function(xw,yw,zw){return[xw+(1+this.m_ds)*(this.m_kappa*yw-this.m_phi*zw)+this.m_dx,yw+(1+this.m_ds)*(-this.m_kappa*xw+this.m_omega*zw)+this.m_dy,zw+(1+this.m_ds)*(this.m_phi*xw-this.m_omega*yw)+this.m_dz];},InverseMolod:function(xb,yb,zb){var xt=(xb-this.m_dx)*(1+this.m_ds),yt=(yb-this.m_dy)*(1+this.m_ds),zt=(zb-this.m_dz)*(1+this.m_ds)
return[1/(1+this.m_ds)*(xt-this.m_kappa*yt+this.m_phi*zt),1/(1+this.m_ds)*(this.m_kappa*xt+yt-this.m_omega*zt),1/(1+this.m_ds)*(-this.m_phi*xt+this.m_omega*yt+zt)];},TransBursa:function(xw,yw,zw){return[(1+this.m_ds)*(xw+this.m_kappa*yw-this.m_phi*zw)+this.m_dx,(1+this.m_ds)*(-this.m_kappa*xw+yw+this.m_omega*zw)+this.m_dy,(1+this.m_ds)*(this.m_phi*xw-this.m_omega*yw+zw)+this.m_dz];},InverseBursa:function(xb,yb,zb){var xt=xb-this.m_dx,yt=yb-this.m_dy,zt=zb-this.m_dz;return[1/(1+this.m_ds)*(xt-this.m_kappa*yt+this.m_phi*zt),1/(1+this.m_ds)*(this.m_kappa*xt+yt-this.m_omega*zt),1/(1+this.m_ds)*(-this.m_phi*xt+this.m_omega*yt+zt)];},WGP2GP:function(x,y,hw,a,f){var xyz=this.WGP2WCTR(x,y,hw);if(this.m_imode==1)xyz=this.TransMolod(xyz[0],xyz[1],xyz[2]);else xyz=this.TransBursa(xyz[0],xyz[1],xyz[2]);var xy=this.CTR2GP(xyz[0],xyz[1],xyz[2],a,f);return[xy[0]+0/3600,xy[1]+0/3600];},WGP2WCTR:function(x,y,h){return this.GP2CTR(x,y,h,this.m_AW,this.m_FW);},WCTR2WGP:function(x,y,z){return this.CTR2GP(x,y,z,this.m_AW,this.m_FW);},GP2WGP:function(x,y,hu,a,f){var xyz=this.GP2CTR(x,y,hu,a,f);if(this.m_imode==1)xyz=this.InverseMolod(xyz[0],xyz[1],xyz[2]);else xyz=this.InverseBursa(xyz[0],xyz[1],xyz[2]);return this.WCTR2WGP(xyz[0],xyz[1],xyz[2]);},GP2CTR:function(x,y,h,a,f1){with(Math){var degrad=atan(1)/45,f=f1;if(f>1)f=1/f;var sphi=x*degrad,slam=y*degrad,recf=1/f;var b=a*(recf-1)/recf;var es=(pow(a,2)-pow(b,2))/pow(a,2);var n=a/sqrt(1-es*pow(sin(sphi),2));return[(n+h)*cos(sphi)*cos(slam),(n+h)*cos(sphi)*sin(slam),((pow(b,2)/pow(a,2))*n+h)*sin(sphi)];}},CTR2GP:function(x,y,z,a,f1){with(Math){var degrad=atan(1)/45,slam=atan(y/x),sphiold=0,sphinew=0,t1=0,h=0,f=f1,i=0;if(f>1)f=1/f;var recf=1/f;var b=a*(recf-1)/recf,es=(pow(a,2)-pow(b,2))/pow(a,2),n=a,p=sqrt(x*x+y*y);do{i=i+1;t1=pow(pow(b,2)/pow(a,2)*n+h,2)-pow(z,2);t1=z/sqrt(t1);sphinew=atan(t1);if(abs(sphinew-sphiold)<t1-18)break;n=a/sqrt(1-es*pow(sin(sphinew),2));h=p/cos(sphinew)-n;sphiold=sphinew;if(i>30)break;}
while(true);var xy=[sphinew/degrad,slam/degrad];if(x<0)xy[1]=180+xy[1];if(xy[1]<0)xy[1]=360+xy[1];return xy;}},GP2TM:function(x,y,a,f1,x0,y0,ok,base1,base2){with(Math){var f=f1,fe=y0,degrad=atan(1)/45,phi0=base1,lam0=base2;if(f>1)f=1/f;var sphi=x*degrad,slam=y*degrad,sphi0=phi0*degrad,slam0=lam0*degrad,recf=1/f;var b=a*(recf-1)/recf;var es=(pow(a,2)-pow(b,2))/pow(a,2),ebs=(pow(a,2)-pow(b,2))/pow(b,2),tn=(a-b)/(a+b),ap=a*(1-tn+5*(pow(tn,2)-pow(tn,3))/4+81*(pow(tn,4)-pow(tn,5))/64),bp=3*a*(tn-pow(tn,2)+7*(pow(tn,3)-pow(tn,4))/8+55*pow(tn,5)/64)/2,cp=15*a*(pow(tn,2)-pow(tn,3)+3*(pow(tn,4)-pow(tn,5))/4)/16,dp=35*a*(pow(tn,3)-pow(tn,4)+11*pow(tn,5)/16)/48,ep=315*a*(pow(tn,4)-pow(tn,5))/512;var dlam=slam-slam0,tmd1=ap*sphi0-bp*sin(2*sphi0)+cp*sin(4*sphi0)-dp*sin(6*sphi0)+ep*sin(8*sphi0);var nfn=tmd1*ok,s=sin(sphi),c=cos(sphi);var t=s/c,eta=ebs*pow(c,2),sn=a/sqrt(1-es*pow(sin(sphi),2));var tmd=ap*sphi-bp*sin(2*sphi)+cp*sin(4*sphi)-dp*sin(6*sphi)+ep*sin(8*sphi);var t1=tmd*ok,t2=sn*s*c*ok/2,t3=sn*s*pow(c,3)*ok*(5-pow(t,2)+9*eta+4*pow(eta,2))/24,t4=sn*s*pow(c,5)*ok*(61-58*pow(t,2)+pow(t,4)+270*eta-330*pow(t,2)*eta+445*pow(eta,2)+324*pow(eta,3)-680*pow(t,2)*pow(eta,2)+88*pow(eta,4)-600*pow(t,2)*pow(eta,3)-192*pow(t,2)*pow(eta,4))/720,t5=sn*s*pow(c,7)*ok*(1385-3111*pow(t,2)+543*pow(t,4)-pow(t,6))/40320,t6=sn*c*ok,t7=sn*pow(c,3)*ok*(1-pow(t,2)+eta)/6,t8=sn*pow(c,5)*ok*(5-18*pow(t,2)+pow(t,4)+14*eta-58*pow(t,2)*eta+13*pow(eta,2)+4*pow(eta,3)-64*pow(t,2)*pow(eta,2)-25*pow(t,2)*pow(eta,3))/120,t9=sn*pow(c,7)*ok*(61-479*pow(t,2)+179*pow(t,4)-pow(t,6))/5040;return[t1+pow(dlam,2)*t2+pow(dlam,4)*t3+pow(dlam,6)*t4+pow(dlam,8)*t5-nfn+x0,fe+dlam*t6+pow(dlam,3)*t7+pow(dlam,5)*t8+pow(dlam,7)*t9];}},TM2GP:function(xn,ye,a,f1,x0,y0,ok,base1,base2){with(Math){var f=f1,degrad=atan(1)/45,t10=0,de=ye-y0;if(f>1)f=1/f;var sphi0=base1*degrad,slam0=base2*degrad,recf=1/f;var b=a*(recf-1)/recf;var es=(pow(a,2)-pow(b,2))/pow(a,2),ebs=(pow(a,2)-pow(b,2))/pow(b,2),tn=(a-b)/(a+b),ap=a*(1-tn+5*(pow(tn,2)-pow(tn,3))/4+81*(pow(tn,4)-pow(tn,5))/64),bp=3*a*(tn-pow(tn,2)+7*(pow(tn,3)-pow(tn,4))/8+55*pow(tn,5)/64)/2,cp=15*a*(pow(tn,2)-pow(tn,3)+3*(pow(tn,4)-pow(tn,5))/4)/16,dp=35*a*(pow(tn,3)-pow(tn,4)+11*pow(tn,5)/16)/48,ep=315*a*(pow(tn,4)-pow(tn,5))/512;var tmd1=ap*sphi0-bp*sin(2*sphi0)+cp*sin(4*sphi0)-dp*sin(6*sphi0)+ep*sin(8*sphi0);var nfn=tmd1*ok;var xn1=xn+nfn-x0;var tmd=xn1/ok;var sr=a*(1-es)/pow(sqrt(1-es*pow(sin(0),2)),3);var ftphi=tmd/sr;for(var i=1;i<=5;i++){t10=ap*ftphi-bp*sin(2*ftphi)+cp*sin(4*ftphi)-dp*sin(6*ftphi)+ep*sin(8*ftphi);sr=a*(1-es)/pow(sqrt(1-es*pow(sin(ftphi),2)),3);ftphi=ftphi+(tmd-t10)/sr;}
sr=a*(1-es)/pow(sqrt(1-es*pow(sin(ftphi),2)),3);var sn=a/sqrt(1-es*pow(sin(ftphi),2));var s=sin(ftphi),c=cos(ftphi);var t=s/c,eta=ebs*pow(c,2);t10=t/(2*sr*sn*pow(ok,2));var t11=t*(5+3*pow(t,2)+eta-4*pow(eta,2)-9*pow(t,2)*eta)/(24*sr*pow(sn,3)*pow(ok,4)),t12=t*(61+90*pow(t,2)+46*eta+45*pow(t,4)-252*pow(t,2)*eta-3*pow(eta,2)+100*pow(eta,3)-66*pow(t,2)*pow(eta,2)-90*pow(t,4)*eta+88*pow(eta,4)+225*pow(t,4)*pow(eta,2)+84*pow(t,2)*pow(eta,3)-192*pow(t,2)*pow(eta,4))/(720*sr*pow(sn,5)*pow(ok,6)),t13=t*(1385+3633*pow(t,2)+4095*pow(t,4)+1575*pow(t,6))/(40320*sr*pow(sn,7)*pow(ok,8)),t14=1/(sn*c*ok),t15=(1+2*pow(t,2)+eta)/(6*pow(sn,3)*c*pow(ok,3)),t16=(5+6*eta+28*pow(t,2)-3*pow(eta,2)+8*pow(t,2)*eta+24*pow(t,4)-4*pow(eta,3)+4*pow(t,2)*pow(eta,2)+24*pow(t,2)*pow(eta,3))/(120*pow(sn,5)*c*pow(ok,5)),t17=(61+662*pow(t,2)+1320*pow(t,4)+720*pow(t,6))/(5040*pow(sn,7)*c*pow(ok,7));var sphi=ftphi-pow(de,2)*t10+pow(de,4)*t11-pow(de,6)*t12+pow(de,8)*t13;var dLam=de*t14-pow(de,3)*t15+pow(de,5)*t16-pow(de,7)*t17;var slam=slam0+dLam;return[sphi/degrad,slam/degrad];}}}))();