/*
 * (c) Copyright 2006, Klika, all rights reserved.
 *
 * This code is the property of Klika d.o.o. The code 
 * may not be included in, invoked from, or otherwise 
 * used in any software, service, device, or process 
 * which is sold, exchanged for profit, or for which 
 * a license, subscription, or royalty fee is charged.
 *
 * Permission is granted to use this code for personal,
 * educational, research, or commercial purposes, provided 
 * this notice is included, and provided this code is not 
 * used as described in the above paragraph.
 *
 * This code may not be modified without express
 * permission of Klika. You may not delete, disable, or in
 * any manner alter distinctive brand features rendered
 * by the code. The use of this code in derivative work is
 * permitted, provided that the code and this notice are 
 * included in full, and provided that the code is used in
 * accordance with these terms.
 *
 * Email: info at triptracker.net
 * Web:   http://slideshow.triptracker.net
 */
var MESSAGES = {
  "format.date":                     "MM/dd/yyyy",
  "format.time":                     "h:mm a",

  "photoviewer.toolbar.first":       "Go to Start (Home)",
  "photoviewer.toolbar.prev":        "Previous Photo (Left arrow)",
  "photoviewer.toolbar.slideShow":   "Start/Pause Slide Show (Space)",
  "photoviewer.toolbar.next":        "Next Photo (Right arrow)",
  "photoviewer.toolbar.last":        "Go to End (End)",
  "photoviewer.toolbar.email":       "Email Photo",
  "photoviewer.toolbar.permalink":   "Link to Photo",
  "photoviewer.toolbar.close":       "Close (Esc)",
  "photoviewer.email.subject.photo": "Photo",

  "gallery.nophotos":                "No photos",
  "gallery.thumbs.start":            "Start",
  "gallery.thumbs.end":              "End",
  "gallery.toolbar.first":           "First Photo",
  "gallery.toolbar.prev":            "Previous Photo",
  "gallery.toolbar.view":            "View Photo",
  "gallery.toolbar.next":            "Next Photo",
  "gallery.toolbar.last":            "Last Photo",
  "gallery.view.full":               "Maximize Window",
  "gallery.view.photo":              "Show Photo Only",
  "gallery.view.text":               "Show Description Only",
  "gallery.view.close":              "Close Window"
};

var agent=navigator.userAgent.toLowerCase();var IE=(agent.indexOf("msie")!=-1&&agent.indexOf("opera")==-1);var IE7=(agent.indexOf("msie 7")!=-1);var OPERA=(agent.indexOf("opera")!=-1);var SAFARI=(agent.indexOf("safari")!=-1);var FIREFOX=(agent.indexOf("gecko")!=-1);var STRICT_MODE=(document.compatMode=="CSS1Compat");var _DOMAIN=undefined;var GALLERY_W=650;var GALLERY_H=530;if(USE_GOOGLE_MAPS==undefined){var USE_GOOGLE_MAPS=true;}
var USE_OLD_MAPS=!USE_GOOGLE_MAPS;var TESTING=false;var log=getLogger();if(document.location.href.indexOf("#jslog")!=-1)
log.enable();function Logger(){this.enable=loggerEnable;this.clear=loggerClear;this.log=loggerLog;this.debug=loggerDebug;this.info=loggerInfo;this.error=loggerError;var console=undefined;try{console=document.createElement("textarea");console.style.display="none";console.style.position="absolute";console.style.right="2px";console.style.bottom="2px";console.style.width="23em";console.style.height="40em";console.style.fontFamily="monospace";console.style.fontSize="9px";console.style.color="#000000";setOpacity(console,0.7);console.border="1px solid #808080";console.ondblclick=clearLogger;}catch(e){}
this.console=console;this.enabled=false;this.logTimeStart=getTimeMillis();}
function getLogger(){var log=undefined;var win=window;while(log==undefined){try{log=win.document.log;}catch(e){break;}
if(win==win.parent)
break;win=win.parent;}
if(log==undefined){log=new Logger();document.log=log;}
return log;}
function clearLogger(){getLogger().clear();}
function loggerEnable(){if(this.enabled||this.console==undefined)
return;if(window.document.body!=undefined){window.document.body.appendChild(this.console);this.console.style.display="";this.enabled=true;}}
function loggerDebug(msg){this.log("DEBUG",msg);}
function loggerInfo(msg){this.log("INFO",msg);}
function loggerError(msg,e){this.log("ERROR",msg,e);}
function loggerLog(level,msg,e){if(!this.enabled||this.console==undefined)
return;var millis=(getTimeMillis()-this.logTimeStart)+"";while(millis.length<6)
millis+=" ";var m=millis+" ";if(msg!=undefined)
m+=msg+" ";if(e!=undefined)
m+=e.name+": "+e.message;this.console.value+=m+"\n";}
function loggerClear(){if(!this.enabled||this.console==undefined)
return;this.console.value="";}
function getTimeMillis(){var t=new Date();return Date.UTC(t.getFullYear(),t.getMonth(),t.getDay(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds());}
function getEvent(event){return(event!=undefined?event:window.event);}
function preventDefault(event){if(event.preventDefault){event.preventDefault();event.stopPropagation();}else{event.returnValue=false;event.cancelBubble=true;}}
function getEventTarget(event){if(event==undefined)
return undefined;if(event.srcElement!=undefined)
return event.srcElement;else
return event.target;}
function getResponse(url,async,getXML,callback,data){var req=undefined;try{req=new ActiveXObject("Msxml2.XMLHTTP");}catch(e1){try{req=new ActiveXObject("Microsoft.XMLHTTP");}catch(e2){req=new XMLHttpRequest();}}
if(req==undefined){log.error("Failed to initialize XML/HTTP");return undefined;}
req.open("GET",url,async);if(!async){req.send(undefined);if(req.readyState!=4){log.error("Request failed: "+req.readyState);return undefined;}
if(!getXML)
return req.responseText;else
return req.responseXML;}else{pollResponse(req,callback,data);req.send(undefined);return undefined;}}
function pollResponse(req,callback,data){if(req.readyState!=4)
window.setTimeout(function(){pollResponse(req,callback,data);},100);else
callback(req,data);}
function getElementsByTagName(node,tag){if(node==undefined)
return undefined;if(IE){return node.getElementsByTagName(tag);}
if(tag.indexOf(":")!=-1){tag=tag.split(":")[1];}
return node.getElementsByTagNameNS("*",tag);}
function getFirstElementsValue(node,tag){if(node==undefined)
return undefined;var nodes=getElementsByTagName(node,tag);if(nodes.length===0)
return undefined;else
return getElementValue(nodes[0]);}
function findDOMElement(id){var el=undefined;var win=window;while(el==undefined){try{el=win.document.getElementById(id);}catch(e){break;}
if(win===win.parent){break;}
win=win.parent;}
return el;}
function getElementValue(node){var i;var val="";for(i=0;i<node.childNodes.length;i++){if(node.childNodes[i].nodeValue!==null)
val+=node.childNodes[i].nodeValue;}
return val;}
function trim(str){if(str==undefined)
return undefined;return str.replace(/^\s*([\s\S]*\S+)\s*$|^\s*$/,'$1');}
function trimToLen(str,len){if(str==undefined){return undefined;}
if(str.length>len){str=str.substring(0,len)+"...";}
return str;}
function getRootWindow(){var win=window;while(win!=undefined){try{if(win===win.parent){break;}else if(win.parent!=undefined&&win.parent.document.location.href.indexOf("/selenium-server/")!=-1){break;}
win=win.parent;}catch(e){win.permissionDenied=true;break;}}
return win;}
function getURLParams(){var i,params=[];var url=window.location.search;if(url==undefined||url.length===0)
return undefined;url=url.substring(1);var namevals=url.replace(/\+/g," ").split("&");for(i=0;i<namevals.length;i++){var name,val;var pos=namevals[i].indexOf("=");if(pos!=-1){name=namevals[i].substring(0,pos);val=unescape(namevals[i].substring(pos+1));}else{name=namevals[i];val=undefined;}
params[name]=val;}
return params;}
function joinLists(list1,list2){var i;var size=0;var result=[];if(list1!=undefined&&list1.length>0){for(i=0;i<list1.length;i++)
result[i]=list1[i];size=list1.length;}
if(list2!=undefined&&list2.length>0){for(i=0;i<list2.length;i++)
result[i+size]=list2[i];}
return result;}
function setCookie(name,value,expire){var expiry=(expire==undefined)?"":("; expires="+expire.toGMTString());document.cookie=name+"="+value+expiry;}
function getCookie(name){if(document.cookie==undefined||document.cookie.length===0)
return undefined;var search=name+"=";var index=document.cookie.indexOf(search);if(index!=-1){index+=search.length;var end=document.cookie.indexOf(";",index);if(end==-1)
end=document.cookie.length;return unescape(document.cookie.substring(index,end));}}
function removeCookie(name){var today=new Date();var expires=new Date();expires.setTime(today.getTime()-1);setCookie(name,"",expires);}
function getMessage(id){if(MESSAGES[id]==undefined){return"("+id+")";}else{return MESSAGES[id];}}
function localizeNodeAttribs(node){var i;if(node==undefined)
return;if(node.alt!=undefined&&node.alt.indexOf("#")===0){node.alt=getMessage(node.alt.substring(1));}
if(node.title!=undefined&&node.title.indexOf("#")===0){node.title=getMessage(node.title.substring(1));}
if(node.childNodes!=undefined){for(i=0;i<node.childNodes.length;i++){localizeNodeAttribs(node.childNodes[i]);}}}
function padNumber(n,pad){n=n+"";while(n.length<pad){n="0"+n;}
return n;}
function isArray(obj){if(obj instanceof Array)
return true;else
return false;}
function simpleDateFormatter(date,pattern){var d=pattern;d=d.replace(/yyyy/g,date.getFullYear());d=d.replace(/yy/g,padNumber(date.getFullYear()%100,2));d=d.replace(/MM/g,padNumber(date.getMonth()+1,2));d=d.replace(/M/g,date.getMonth()+1);d=d.replace(/dd/g,padNumber(date.getDate(),2));d=d.replace(/d/g,date.getDate());d=d.replace(/HH/g,padNumber(date.getHours(),2));d=d.replace(/H/g,date.getHours());d=d.replace(/hh/g,padNumber(date.getHours()%12,2));d=d.replace(/h/g,date.getHours()%12);d=d.replace(/mm/g,padNumber(date.getMinutes(),2));d=d.replace(/m/g,date.getMinutes());d=d.replace(/ss/g,padNumber(date.getSeconds(),2));d=d.replace(/s/g,date.getSeconds());var am=(date.getHours()<12?"AM":"PM");d=d.replace(/a/g,am);return d;}
function formatDateTime(date){if(date==undefined)
return undefined;return formatDate(date)+" "+formatTime(date);}
function formatDate(date){var datePattern=getMessage("format.date");return simpleDateFormatter(date,datePattern);}
function formatTime(date){var timePattern=getMessage("format.time");return simpleDateFormatter(date,timePattern);}
function parseISOTime(strTime){if(strTime==undefined)
return undefined;var isoRE=/^(\d{4})-(\d\d)-(\d\d)T(\d\d):(\d\d):(\d\d)(\.\d{3})?([Z+-])?(\d\d)?:?(\d\d)?$/;if(!isoRE.test(strTime)){return undefined;}else{return new Date(RegExp.$1,RegExp.$2-1,RegExp.$3,RegExp.$4,RegExp.$5,RegExp.$6);}}
function setOpacity(elt,opacity){if(IE){elt.style.filter="alpha(opacity="+parseInt(opacity*100)+")";}
elt.style.KhtmlOpacity=opacity;elt.style.opacity=opacity;}
function validCoordinates(lat,lon){if(Math.abs(lat)>90||Math.abs(lon)>180){return false;}
if(lat===0.0&&lon===0.0){return false;}
return true;}
function isHosted(){var host=document.location.host;if(host==undefined)
host="";return((host.indexOf("triptracker.net")==-1||host.indexOf("slideshow.triptracker.net")!=-1)&&host.indexOf("rtvslo.si")==-1&&!checkDomain());}
function checkDomain(){try{if(_DOMAIN==undefined)
return false;var protocol=document.location.protocol;if(protocol==undefined)
protocol="http:";var host=document.location.host;if(host==undefined)
host="";host=host.toLowerCase();if(protocol.toLowerCase().indexOf("file")===0){return true;}
var pos=host.lastIndexOf(":");if(pos!=-1){host=host.substring(0,pos);}
if(host.indexOf("www.")===0){host=host.substring(4);}
if(host===""||host=="localhost"||host=="127.0.0.1")
return true;var domain=_DOMAIN.toLowerCase();pos=domain.indexOf("://");if(pos!=-1){domain=domain.substring(pos+3);}
pos=domain.indexOf("/");if(pos!=-1){domain=domain.substring(0,pos);}
if(domain.indexOf("www.")===0){domain=domain.substring(4);}
if(host==domain){return true;}else if(new RegExp(domain).test(host)){return true;}
return false;}catch(e){return true;}}
function getWindowSize(win){var availW=win.innerWidth;if(availW==undefined||availW===0||isNaN(availW))
availW=win.document.documentElement.clientWidth;if(availW==undefined||availW===0||isNaN(availW))
availW=win.document.body.clientWidth;var availH=win.innerHeight;if(availH==undefined||availH===0||isNaN(availH))
availH=win.document.documentElement.clientHeight;if(availH==undefined||availH===0||isNaN(availH))
availH=win.document.body.clientHeight;return{w:availW,h:availH};}
function getDocumentSize(win){var winSize=getWindowSize(win);var scrollPos=getScrollPos(win);var w=winSize.w+scrollPos.left;var h=winSize.h+scrollPos.top;w=Math.max(w,win.document.body.offsetWidth);h=Math.max(h,win.document.body.offsetHeight);w=Math.max(w,win.document.body.scrollWidth);h=Math.max(h,win.document.body.scrollHeight);return{w:w,h:h};}
function getScrollPos(win){var scrollTop=win.pageYOffset;if(scrollTop==undefined||scrollTop===0)
scrollTop=win.document.documentElement.scrollTop;if(scrollTop==undefined||scrollTop===0)
scrollTop=win.document.body.scrollTop;var scrollLeft=win.pageXOffset;if(scrollLeft==undefined||scrollLeft===0)
scrollLeft=win.document.documentElement.scrollLeft;if(scrollLeft==undefined||scrollLeft===0)
scrollLeft=win.document.body.scrollLeft;return{top:scrollTop,left:scrollLeft};}
var CLEAR_EVENTS=["onclick","ondblclick","onkeydown","onkeypress","onmousedown","onmouseup","onmousemove","onmouseover","onmouseout","onmousewheeldown","oncontextmenu"];function clearEvents(){var i,j;var count=0;if(document.all==undefined)
return;for(i=0;i<document.all.length;i++){for(j=0;j<CLEAR_EVENTS.length;j++){var event=document.all[i][CLEAR_EVENTS[j]];if(event!=undefined){document.all[i][CLEAR_EVENTS[j]]=null;count++;}}}}
if(window.attachEvent)
window.attachEvent("onunload",clearEvents);function getGallery(){var gallery=undefined;var win=window;while(gallery==undefined){try{gallery=win.document.gallery;}catch(e){break;}
var tmpWin=win;win=win.parent;if(tmpWin===win){break;}}
return gallery;}
function getMap(){if(this.map!=undefined)
return this.map;try{if(document.map!=undefined)
return document.map;}catch(e){}
try{if(window.parent.document.map!=undefined)
return window.parent.document.map;}catch(e){}
return undefined;}
function viewerCloseCallback(photoIndex){var i,j,n=0;var gallery=getGallery();for(i=0;i<gallery.sets.length;i++){for(j=0;j<gallery.sets[i].photos.length;j++){var p=gallery.sets[i].photos[j];if(p==undefined||p.orig==undefined||p.orig.src==undefined)
continue;if(n==photoIndex){gallery.setIndex=i;gallery.photoIndex=j;gallery.renderPhotos();gallery.win.focus();return;}
n++;}}}
var PAD=1;var MAP_EVENT_INIT="init";var MAP_EVENT_CLICK="click";var MAP_EVENT_CHANGE_ENTRY="change-entry";var MAP_EVENT_CHANGE_PLACES="change-places";var MAP_EVENT_CLICK_PLACE="click_place";var DEBUG_OVERFLOW=false;var DEBUG_BORDER=false;var DEBUG_TITLE=false;var ANIMATE_PAN_PAUSE=10;var ANIMATE_PAN_TIME=50;var ANIMATE_OVERLAY_PAUSE=5000;var CANVAS_OPACITY=0.5;var CANVAS_LINE_WIDTH=3;var CANVAS_LINE_COLOR={r:0,g:0,b:255,hex:"0000ff"};var CANVAS_POINT_RADIUS=4;var CANVAS_POINT_COLOR={r:0,g:0,b:255,hex:"0000ff"};var CANVAS_POINT_COLOR_SELECTED={r:255,g:0,b:0,hex:"ff0000"};var CANVAS_POINT_COLOR_INNER={r:255,g:255,b:255,hex:"ffffff"};var LOC_FONT_SIZE=11;var EARTH_PERIMETER=40075098;var GMAP_RESOLUTION=1.0;var CLICK_RADIUS=30;var MAX_POINT_DIST=0.1;var SHOW_PLACEMARKS=true;var STATE_IDS_COOKIE="map.ids";var STATE_COOKIE="map";var MAX_COOKIE_VALUES=3;var LIVE_TRACKING_OFF=0;var LIVE_TRACKING_UPDATING=1;var LIVE_TRACKING_HIBERNATE=2;var LIVE_TRACKING_INTERVAL_FAST=10000;var LIVE_TRACKING_INTERVAL_SLOW=60000;if(LIVE_TRACKING_ICONS==undefined){var LIVE_TRACKING_ICONS=["http://triptracker.net/jsmap/images/map/gautoupdatepoint1.png","http://triptracker.net/jsmap/images/map/gautoupdatepoint2.png","http://triptracker.net/jsmap/images/map/gautoupdatepoint3.png"];}
if(LIVE_TRACKING_ICONS_DIM==undefined){var LIVE_TRACKING_ICONS_DIM=[{w:12,h:12},{w:12,h:12},{w:12,h:12}];}
var PLAYBACK_INTERVAL=200;if(PLAYBACK_TIMEFRAME==undefined){var PLAYBACK_TIMEFRAME=120000;}
var PLAYBACK_RESTART_PAUSE=3000;var MAP_DEFAULT_SETTINGS={imgRoot:"/jsmap/images/",galleryFrameUrlPrefix:"/jsmap/images/",allowControl:true,miniMap:false,slideMap:false,showOverlay:true,showTitle:false,showGallery:true,showHelp:true,handleGlobalKeys:true,limitDragBounds:true,storeStateID:undefined};var GALLERY_DIV_ID="Gallery";var initialized=false;if(USE_OLD_MAPS){var ZINDEX_MAP=2;var ZINDEX_MAP_OVERLAY=4;var ZINDEX_OVERLAY=6;var ZINDEX_NAVIGATION=8;var ZINDEX_INFO_BOX=10;var OVERLAY_MODE_ALL=0;var OVERLAY_MODE_POINTS=1;var OVERLAY_MODE_NONE=2;var OVERLAY_MODE_COUNT=3;var MAX_CANVAS_AREA=4096*4096;var mapsInfo=undefined;var _FF_TEXTAREA=undefined;var CAPITALS=[["Canada",60.0,-96.0,9984670.0,"Ottawa"],["United States",36.69556,-108.21972,9629091.0,"Washington"],["China",35.0,105.0,9596960.0,"Beijing"],["Brazil",-10.0,-55.0,8511965.0,"Brasília"],["Australia",-25.0,135.0,7686850.0,"Canberra"],["India",20.0,77.0,3287590.0,"New Delhi"],["Argentina",-34.0,-64.0,2766890.0,"Buenos Aires"],["Kazakhstan",48.0,68.0,2717300.0,"Astana"],["Sudan",15.0,30.0,2505810.0,"Khartoum"],["Algeria",28.0,3.0,2381740.0,"Algiers"],["Congo (Kinshasa)",0.0,25.0,2345410.0,"Kinshasa"],["Greenland",72.0,-40.0,2166086.0,"Godthåb"],["Mexico",23.0,-102.0,1972550.0,"Mexico"],["Saudi Arabia",25.0,45.0,1960582.0,"Riyadh"],["Indonesia",-5.0,120.0,1919440.0,"Jakarta"],["Libya",25.0,17.0,1759540.0,"Tripoli"],["Iran",32.0,53.0,1648000.0,"Tehrān"],["Mongolia",46.0,105.0,1565000.0,"Ulaanbaatar"],["Peru",-10.0,-76.0,1285220.0,"Lima"],["Chad",15.0,19.0,1284000.0,"N'Djamena"],["Niger",16.0,8.0,1267000.0,"Niamey"],["Angola",-12.5,18.5,1246700.0,"Luanda"],["Mali",17.0,-4.0,1240000.0,"Bamako"],["South Africa",-30.0,26.0,1219912.0,"Pretoria"],["Colombia",4.0,-72.0,1138910.0,"Bogotá"],["Ethiopia",8.0,38.0,1127127.0,"Addis Ababa"],["Bolivia",-17.0,-65.0,1098580.0,"La Paz"],["Mauritania",20.0,-12.0,1030700.0,"Nouakchott"],["Egypt",27.0,30.0,1001450.0,"Cairo"],["Tanzania",-6.0,35.0,945087.0,"Dar es Salaam"],["Nigeria",10.0,8.0,923768.0,"Abuja"],["Venezuela",8.0,-66.0,912050.0,"Caracas"],["Namibia",-22.0,17.0,825418.0,"Windhoek"],["Pakistan",30.0,70.0,803940.0,"Islamabad"],["Mozambique",-18.25,35.0,801590.0,"Maputo"],["Turkey",39.0,35.0,780580.0,"Ankara"],["Chile",-30.0,-71.0,756950.0,"Santiago"],["Zambia",-15.0,30.0,752614.0,"Lusaka"],["Myanmar",22.0,98.0,678500.0,"Rangoon"],["Afghanistan",33.0,65.0,647500.0,"Kabul"],["Somalia",6.0,48.0,637657.0,"Mogadishu"],["Central African Republic",7.0,21.0,622984.0,"Bangui"],["Ukraine",49.0,32.0,603700.0,"Kiev"],["Botswana",-22.0,24.0,600370.0,"Gaborone"],["Madagascar",-20.0,47.0,587040.0,"Antananarivo"],["Kenya",1.0,38.0,582650.0,"Nairobi"],["France",46.0,2.0,547030.0,"Paris"],["Yemen",15.5,47.5,527970.0,"Sanaa"],["Thailand",15.0,100.0,514000.0,"Krung Thep"],["Spain",40.0,-4.0,504782.0,"Madrid"],["Turkmenistan",40.0,60.0,488100.0,"Ashgabat"],["Cameroon",6.0,12.0,475440.0,"Yaoundé"],["Papua New Guinea",-6.0,147.0,462840.0,"Port Moresby"],["Sweden",62.0,15.0,449964.0,"Stockholm"],["Uzbekistan",41.0,64.0,447400.0,"Tashkent"],["Morocco",32.0,-5.0,446550.0,"Rabat"],["Iraq",33.0,44.0,437072.0,"Baghdad"],["Paraguay",-22.9933333,-57.9963889,406750.0,"Asunción"],["Zimbabwe",-19.0,29.0,390580.0,"Harare"],["Japan",36.0,138.0,377835.0,"Tokyo"],["Germany",51.5,10.5,357021.0,"Berlin"],["Congo (Brazzaville)",-1.0,15.0,342000.0,"Brazzaville"],["Finland",64.0,26.0,337030.0,"Helsinki"],["Malaysia",2.5,112.5,329750.0,"Kuala Lumpur"],["Vietnam",16.1666667,107.8333333,329560.0,"Hanoi"],["Norway",62.0,10.0,324220.0,"Oslo"],["Ivory Coast",8.0,-5.0,322460.0,"Yamoussoukro"],["Poland",52.0,20.0,312685.0,"Warsaw"],["Italy",42.8333333,12.8333333,301230.0,"Rome"],["Philippines",13.0,122.0,300000.0,"Manila"],["Ecuador",-2.0,-77.5,283560.0,"Quito"],["Burkina Faso",13.0,-2.0,274200.0,"Ouagadougou"],["New Zealand",-42.0,174.0,268680.0,"Wellington"],["Gabon",-1.0,11.75,267667.0,"Libreville"],["Western Sahara",25.0,-13.5,266000.0,""],["Guinea",11.0,-10.0,245857.0,"Conakry"],["United Kingdom",54.0,-4.0,244820.0,"London"],["Ghana",8.0,-2.0,239460.0,"Accra"],["Romania",46.0,25.0,237500.0,"Bucharest"],["Laos",18.0,105.0,236800.0,"Vientiane"],["Uganda",2.0,33.0,236040.0,"Kampala"],["Guyana",5.0,-59.0,214970.0,"Georgetown"],["Oman",21.0,57.0,212460.0,"Muscat"],["Belarus",53.0,28.0,207600.0,"Minsk"],["Kyrgyzstan",41.0,75.0,198500.0,"Bishkek"],["Senegal",14.0,-14.0,196190.0,"Dakar"],["Syria",35.0,38.0,185180.0,"Damascus"],["Cambodia",13.0,105.0,181040.0,"Phnom Penh"],["Uruguay",-33.0,-56.0,176220.0,"Montevideo"],["Tunisia",34.0,9.0,163610.0,"Tunis"],["Suriname",4.0,-56.0,163270.0,"Paramaribo"],["Bangladesh",24.0,90.0,144000.0,"Dhaka"],["Tajikistan",39.0,71.0,143100.0,"Dushanbe"],["Nepal",28.0,84.0,140800.0,"Kathmandu"],["Greece",39.0,22.0,131940.0,"Athens"],["Nicaragua",13.0,-85.0,129494.0,"Managua"],["Eritrea",15.0,39.0,121320.0,"Asmara"],["North Korea",40.0,127.0,120540.0,"Pyongyang"],["Malawi",-13.5,34.0,118480.0,"Lilongwe"],["Benin",9.5,2.25,112620.0,"Porto-Novo"],["Honduras",15.0,-86.5,112090.0,"Tegucigalpa"],["Liberia",6.5,-9.5,111370.0,"Monrovia"],["Bulgaria",43.0,25.0,110910.0,"Sofia"],["Cuba",22.0,-79.5,110860.0,"Havana"],["Guatemala",15.5,-90.25,108890.0,"Guatemala"],["Iceland",65.0,-18.0,103000.0,"Reykjavík"],["Serbia And Montenegro",43.75,20.75,102350.0,"Belgrade"],["South Korea",37.0,127.5,98480.0,"Seoul"],["Hungary",47.0,20.0,93030.0,"Budapest"],["Portugal",39.5,-8.0,92391.0,"Lisbon"],["Jordan",31.0,36.0,92300.0,"Amman"],["French Guiana",4.0,-53.0,91000.0,"Cayenne"],["Azerbaijan",40.5,47.5,86600.0,"Baku"],["Austria",47.3333333,13.3333333,83858.0,"Vienna"],["United Arab Emirates",24.0,54.0,82880.0,"Abu Dhabi"],["Czech Republic",49.75,15.0,78866.0,"Prague"],["Panama",9.0,-80.0,78200.0,"Panamá"],["Sierra Leone",8.5,-11.5,71740.0,"Freetown"],["Ireland",53.0,-8.0,70280.0,"Baile Átha Cliath"],["Georgia",42.0,43.5,69700.0,"Tbilisi"],["Sri Lanka",7.0,81.0,65610.0,"Colombo"],["Lithuania",56.0,24.0,65200.0,"Vilnius"],["Latvia",57.0,25.0,64589.0,"Rīga"],["Svalbard and Jan Mayen",,,62049.0,"Longyearbyen"],["Togo",8.0,1.1666667,56785.0,"Lomé"],["Croatia",45.1666667,15.5,56542.0,"Zagreb"],["Bosnia and Herzegovina",44.25,17.8333333,51129.0,"Sarajevo"],["Costa Rica",10.0,-84.0,51100.0,"San José"],["Slovakia",48.6666667,19.5,48845.0,"Bratislava"],["Dominican Republic",19.0,-70.6666667,48730.0,"Santo Domingo"],["Bhutan",27.5,90.5,47000.0,"Thimphu"],["Estonia",59.0,26.0,45226.0,"Tallinn"],["Denmark",56.0,10.0,43094.0,"Copenhagen"],["Netherlands",52.5,5.75,41526.0,"Amsterdam"],["Switzerland",47.0,8.0,41290.0,"Bern"],["Guinea-Bissau",12.0,-15.0,36120.0,"Bissau"],["Taiwan",24.0,121.0,35980.0,"Taipei"],["Moldova",47.0,29.0,33843.0,"Chişinău"],["Belgium",51.1833333,4.3833333,30510.0,"Brussels"],["Lesotho",-29.5,28.25,30355.0,"Maseru"],["Armenia",40.0,45.0,29800.0,"Yerevan"],["Albania",41.0,20.0,28748.0,"Tirana"],["Solomon Islands",-8.0,159.0,28450.0,"Honiara"],["Equatorial Guinea",2.0,10.0,28051.0,"Malabo"],["Burundi",-3.5,30.0,27830.0,"Bujumbura"],["Haiti",19.0,-72.4166667,27750.0,"Port-au-Prince"],["Rwanda",-2.0,30.0,26338.0,"Kigali"],["Macedonia",41.8333333,22.0,25333.0,"Skopje"],["Djibouti",11.5,42.5,23000.0,"Djibouti"],["Belize",17.25,-88.75,22966.0,"Belmopan"],["El Salvador",13.8333333,-88.9166667,21040.0,"San Salvador"],["Israel",31.5,34.75,20770.0,""],["Slovenia",46.25,15.1666667,20273.0,"Ljubljana"],["New Caledonia",,,19060.0,"Nouméa"],["Fiji",-18.0,178.0,18270.0,"Suva"],["Kuwait",29.5,47.75,17820.0,"Kuwait"],["Swaziland",-26.5,31.5,17363.0,"Mbabane"],["East Timor",-8.8333333,125.75,15007.0,""],["Bahamas",24.0,-76.0,13940.0,"Nassau"],["Vanuatu",-16.0,167.0,12200.0,"Port-Vila"],["Falkland Islands",-51.75,-59.1666667,12173.0,"Stanley"],["Qatar",25.5,51.25,11437.0,"Doha"],["Gambia",13.5,-15.5,11300.0,"Banjul"],["Jamaica",18.25,-77.5,10991.0,"Kingston"],["Lebanon",33.8333333,35.8333333,10400.0,"Beirut"],["Cyprus",35.0,33.0,9250.0,"Nicosia"],["Puerto Rico",,,9104.0,""],["French Southern Territories",,,7829.0,""],["Palestinian Territory",31.9215700159324,35.2032852172852,5970.0,""],["Brunei",4.5,114.6666667,5770.0,"Bandar Seri Begawan"],["Trinidad and Tobago",11.0,-61.0,5128.0,"Port-of-Spain"],["French Polynesia",10.2833333,-109.2166667,4167.0,"Papeete"],["Cape Verde",16.0,-24.0,4033.0,"Praia"],["South Georgia and the South Sandwich Islands",-56.0,-33.0,3903.0,""],["Samoa",-13.5833333,-172.3333333,2944.0,"Apia"],["Luxembourg",49.75,6.1666667,2586.0,"Luxembourg"],["Reunion",,,2517.0,"Saint-Denis"],["Comoros",-12.8333333,45.1666667,2170.0,"Moroni"],["Mauritius",-20.3,57.5833333,2040.0,"Port Louis"],["Guadeloupe",,,1780.0,"Basse-Terre"],["Faroe Islands",,,1399.0,"Tórshavn"],["Martinique",,,1100.0,"Fort-de-France"],["Hong Kong S.A.R., China",22.25,114.1666667,1092.0,"Hong Kong (historical)"],["Sao Tome and Principe",1.0,7.0,1001.0,"São Tomé"],["Netherlands Antilles",12.1666667,-69.0,960.0,""],["Kiribati",-5.0,-170.0,811.0,"Bairiki"],["Dominica",15.5,-61.3333333,754.0,"Roseau"],["Tonga",-20.0,-175.0,748.0,"Nuku`alofa"],["Micronesia",5.0,152.0,702.0,"Palikir"],["Singapore",1.3666667,103.8,692.7,"Singapore"],["Bahrain",26.0,50.5,665.0,"Manama"],["Saint Lucia",13.8833333,-60.9666667,616.0,"Castries"],["Isle of Man",,,572.0,""],["Guam",,,549.0,""],["Northern Mariana Islands",,,477.0,""],["Andorra",42.5,1.5,468.0,"Andorra la Vella"],["Palau",6.0,134.0,458.0,"Koror"],["Seychelles",-4.5833333,55.6666667,455.0,"Victoria"],["Antigua and Barbuda",17.05,-61.8,443.0,"Saint John's"],["Barbados",13.1666667,-59.5333333,431.0,"Bridgetown"],["Turks and Caicos Islands",21.7333333,-71.5833333,430.0,"Grand Turk"],["Heard Island and McDonald Islands",,,412.0,""],["Saint Helena",-37.25,-12.5,410.0,"Jamestown"],["Saint Vincent and the Grenadines",13.0833333,-61.2,389.0,"Kingstown"],["Mayotte",-12.8333333,45.1666667,374.0,"Mamoudzou"],["U.S. Virgin Islands",,,352.0,""],["Grenada",12.1166667,-61.6666667,344.0,"Saint George's"],["Malta",35.9166667,14.4333333,316.0,"Valletta"],["Maldives",3.2,73.0,300.0,"Male"],["Wallis and Futuna",,,274.0,""],["Cayman Islands",19.5,-80.6666667,262.0,"George Town"],["Saint Kitts and Nevis",17.3333333,-62.75,261.0,"Basseterre"],["Niue",-19.0333333,-169.8666667,260.0,"Alofi"],["Macao S.A.R., China",22.1666667,113.55,254.0,"Macau"],["Saint Pierre and Miquelon",,,242.0,"Saint-Pierre"],["Cook Islands",22.1666667,113.55,240.0,"Avarua"],["American Samoa",,,199.0,""],["Aruba",12.5,-69.9666667,193.0,"Oranjestad"],["Marshall Islands",10.0,167.0,181.3,"Majuro"],["Liechtenstein",47.1666667,9.5333333,160.0,"Vaduz"],["British Virgin Islands",18.5,-64.5,153.0,"Road Town"],["Christmas Island",-10.5,105.6666667,135.0,"Flying Fish Cove"],["Jersey",,,116.0,""],["Montserrat",16.75,-62.2,102.0,"Plymouth"],["Anguilla",18.2166667,-63.05,102.0,"The Valley"],["Guernsey",,,78.0,""],["San Marino",43.9333333,12.4166667,61.2,"San Marino"],["British Indian Ocean Territory",,,60.0,""],["Bermuda",32.3333333,-64.75,53.0,"Hamilton"],["Pitcairn",-25.0666667,-130.0833333,47.0,"Adamstown"],["Norfolk Island",-29.0333333,167.95,34.6,""],["Tuvalu",-8.0,178.0,26.0,"Funafuti"],["Nauru",-0.5333333,166.9166667,21.0,""],["Cocos (Keeling) Islands",-12.0,96.8333333,14.0,""],["Tokelau",-9.0,-171.75,10.0,""],["Gibraltar",36.1333333,-5.35,6.5,"Gibraltar"],["Monaco",43.7333333,7.4,1.95,"Monaco"],["Russia",60.0,100.0,1.70752E7,"Moscow"],["Antarctica",,,1.4E7,""],["Vatican",41.9,12.45,0.44,""],["United States Minor Outlying Islands",,,0.0,""],["Bouvet Island",,,,""],["Aland Islands",,,,""]];}
if(USE_OLD_MAPS){function evalURL(url,i,j,rows,cols,level){var p;var params=url.match(/{[^}]+}/g);if(params==undefined)
return url;for(p=0;p<params.length;p++){var param=params[p].substring(1,params[p].length-1);var padding=param.match(/#0+/);if(padding!=undefined){param=param.substring(padding[0].length);padding=parseInt(padding[0].length);}else{padding=0;}
var val=eval(param);val=padNumber(val,padding);url=url.replace(params[p],val);}
return url;}}
function parseCoordinates(str,onlylastpoint){if(str==undefined)
return undefined;var i,coord;var tokens=str.split(/\s+/);if(tokens.length<2){return null;}
if(onlylastpoint){coord={lat:parseFloat(tokens[tokens.length-2]),lon:parseFloat(tokens[tokens.length-1])};if(validCoordinates(coord.lat,coord.lon))
return coord;else
return null;}else{var coords=[];for(i=0;i<tokens.length;i+=2){coord={lat:parseFloat(tokens[i]),lon:parseFloat(tokens[i+1])};if(!validCoordinates(coord.lat,coord.lon))
continue;coords.push(coord);}
return coords;}}
function autoUpdate(map,track){var interval=LIVE_TRACKING_INTERVAL_SLOW;if(track.livestatus==LIVE_TRACKING_UPDATING)
interval=LIVE_TRACKING_INTERVAL_FAST;if(track.live)
track.updateTimerID=window.setTimeout(function(){map.addMapItems(track,false,true);},interval);else
log.info("track is not live, ending live updating");}
function playbackStart(map){var i;var track;var allTracksLoaded=true;for(i=0;i<map.tracks.length;i++){if(map.tracks[i].playback&&!map.tracks[i].loaded){allTracksLoaded=false;}else if(map.tracks[i].trackCoords==undefined||map.tracks[i].trackCoords[0]==undefined){map.tracks[i].playback=false;}}
if(allTracksLoaded){map.playbackStarted=true;var steps=PLAYBACK_TIMEFRAME/PLAYBACK_INTERVAL;var biggestTimeFrameIndex=0;var biggestTimeFrame=0;for(i=0;i<map.tracks.length;i++){track=map.tracks[i];if(track.playback){var beginTime=track.trackTimes[0];var endTime=track.trackTimes[track.trackTimes.length-1];var diff=endTime-beginTime;if(diff>biggestTimeFrame){biggestTimeFrame=diff;biggestTimeFrameIndex=i;map.playbackTimeFrameStep=diff/steps;}
map.tracks[i].newLat=map.tracks[i].trackCoords[0].lat;map.tracks[i].newLon=map.tracks[i].trackCoords[0].lon;map.tracks[i].playbackIndex=1;map.tracks[i].playbackStopped=false;map.tracks[i].playbackTime=beginTime;map.gmap.renderAutoupdatePlacemark(map.tracks[i]);}}
map.tracks[biggestTimeFrameIndex].playbackDirector=true;map.playbackTimerID=window.setTimeout(function(){playbackLoop(map);},PLAYBACK_INTERVAL);}}
function playbackLoop(map){var i,j;var track;for(i=0;i<map.tracks.length;i++){track=map.tracks[i];if(track.playbackStopped||!track.playback)
continue;var oldTime=track.playbackTime;var nextIndexTime;track.playbackTime=oldTime+map.playbackTimeFrameStep;while(true){nextIndexTime=track.trackTimes[track.playbackIndex];if(track.playbackTime<nextIndexTime){track.playbackIndex-=1;break;}
track.playbackIndex+=1;var playbackFinish=false;if(track.playbackIndex>track.trackCoords.length-1){track.newLat=track.trackCoords[track.trackCoords.length-1].lat;track.newLon=track.trackCoords[track.trackCoords.length-1].lon;map.gmap.renderAutoupdatePlacemark(track);if(track.playbackDirector){window.setTimeout(function(){playbackStart(map);},PLAYBACK_RESTART_PAUSE);return;}else{track.playbackStopped=true;playbackFinish=true;break;}}}
if(playbackFinish)continue;var currIndexTime=track.trackTimes[track.playbackIndex];var currPlaybackTime=track.playbackTime;var interpRatio=(currPlaybackTime-currIndexTime)/(nextIndexTime-currIndexTime);var latCurr=track.trackCoords[track.playbackIndex].lat;var latNext=track.trackCoords[track.playbackIndex+1].lat;var lonCurr=track.trackCoords[track.playbackIndex].lon;var lonNext=track.trackCoords[track.playbackIndex+1].lon;track.newLat=latCurr+(latNext-latCurr)*interpRatio;track.newLon=lonCurr+(lonNext-lonCurr)*interpRatio;map.gmap.renderAutoupdatePlacemark(track);}
map.playbackTimerID=window.setTimeout(function(){playbackLoop(map);},PLAYBACK_INTERVAL);}
function undecodeHTML(text){if(text!=undefined&&text.length>0){text=text.replace(/&lt;/g,"<");text=text.replace(/&gt;/g,">");text=text.replace(/&quot;/g,"\"");text=text.replace(/<a href=/g,"<a target=\"_new\" href=");text=text.replace(/&amp;/g,"&");}
return text;}
function mapClick(event){var tgt=getEventTarget(event);if(tgt==undefined||!tgt.draggable)
return;var cp=this.getClickPosition(event);var dx=this.w/2-cp.x;var dy=this.h/2-cp.y;var center=this.getCenter();var off=(360*(-dx)/this.mapInfo.tileSize/this.numTiles.cols);var lon=center.lon+off;off=(180*dy/this.mapInfo.tileSize/this.numTiles.rows);var lat=center.lat+off;var resolution=360/(this.mapInfo.numTiles.cols*this.mapInfo.tileSize);this.mapFireEvent("click",{lat:lat,lon:lon,resolution:resolution});}
function mapAddListener(event,func){if(this.eventListeners==undefined){this.eventListeners=[];}
if(this.eventListeners[event]==undefined){this.eventListeners[event]=[];}
this.eventListeners[event].push(func);}
function mapFireEvent(event,params){if(this.eventListeners==undefined){return;}
var funcs=this.eventListeners[event];if(funcs==undefined){return;}
var i;for(i=0;i<funcs.length;i++){var func=funcs[i];if(event===MAP_EVENT_CLICK){func(params.lat,params.lon,params.resolution);}else if(event===MAP_EVENT_CHANGE_ENTRY){func(params.index);}else if(event===MAP_EVENT_CHANGE_PLACES){func(params.places);}else if(event===MAP_EVENT_CLICK_PLACE){func(params.id);}else{func();}}}
var overlayTarget=undefined;function overlayClick(event){try{var i;var id=undefined;event=getEvent(event);preventDefault(event);if(event.type!="click")
return true;var tgt=getEventTarget(event);if(tgt==undefined)
return true;id=tgt.divID;if(id==undefined)
id=tgt.id;if(id==undefined)
return true;overlayTarget=undefined;var map=document.map;for(i=0;i<map.overlays.length;i++){if(map.overlays[i].id==id){overlayTarget=map.overlays[i];if(overlayTarget.handler)
overlayTarget.handler();break;}}
return false;}catch(e){log.error("overlayClick",e);throw e;}}
if(USE_OLD_MAPS){var keyTimerID=undefined;var keysHeld=[];function onKeyUp(event){keysHeld[event.keyCode]=false;}
var mkeyHandled=false;function handleEvent(event){try{event=getEvent(event);if(document.map==undefined){throw"Can't get map from event";}
var map=document.map;if(map.doHandleEvents!=undefined&&!map.doHandleEvents)
return true;var tgt;if(event.type=="mousemove"){return map.dragMove(event);}else if(event.type=="mousedown"){window.focus();map.dragInfo.clickedMap=true;tgt=getEventTarget(event);if(tgt!=undefined&&tgt.draggable)
return map.dragStart(event);}else if(event.type=="mouseover"){map.dragInfo.overMap=true;return false;}else if(event.type=="mouseout"){tgt=getEventTarget(event);if(tgt!=undefined&&tgt.nodeName.toLowerCase()=="html")
map.dragStop(event);map.dragInfo.overMap=false;return false;}else if(event.type=="mouseup"){preventDefault(event);return map.dragStop(event);}else if(event.type=="mousewheel"||event.type=="DOMMouseScroll"){return map.mapZoomWheel(event);}else if(event.type=="dblclick"){tgt=getEventTarget(event);if(tgt!=undefined&&tgt.draggable)
return map.mapCenter(event);}else if(event.type=="keyup"){return onKeyUp(event);}else if(event.type=="keydown"){mkeyHandled=!handleKey(map,event);return!mkeyHandled;}else if(event.type=="keypress"){return!mkeyHandled;}else if(event.type=="contextmenu"){return false;}
return true;}catch(e){log.error("handleEvent",e);throw e;}}
function handleKeyEvent(event){if(document.map==undefined){throw"Can't get map from event";}
var map=document.map;if(map.doHandleEvents!=undefined&&!map.doHandleEvents)
return true;if(!map.dragInfo.overMap)
return true;var handleGlobalKeys=map.settings.handleGlobalKeys==undefined||map.settings.handleGlobalKeys;if(handleGlobalKeys||(map.dragInfo.clickedMap&&map.dragInfo.overMap)){return handleEvent(event);}else{return true;}}
function dragStart(event){this.dragInfo.drag=true;this.dragInfo.moved=false;this.dragInfo.zoom=false;this.dragInfo.lastTime=getTimeMillis();this.dragInfo.x=event.clientX;this.dragInfo.y=event.clientY;this.setImgPos();return false;}
function dragStop(event){if(!this.dragInfo.drag||!this.dragInfo.moved){this.dragInfo.drag=false;if(!this.dragInfo.moved&&this.dragInfo.overMap){this.mapClick(event);}
return true;}
this.dragInfo.drag=false;this.dragInfo.zoom=false;this.dragInfo.lastTime=-1;this.setImgPos();this.setCenter(this.getCenter());this.setMapState();this.renderCapitals();var map=this;window.setTimeout(function(){renderPaths(undefined,map);},10);return false;}
function dragMove(event){if(!this.dragInfo.drag)
return false;this.dragInfo.moved=true;var time=getTimeMillis();if(this.dragInfo.lastTime!=-1&&time-this.dragInfo.lastTime<50){return false;}
this.dragInfo.lastTime=time;var x=event.clientX-this.dragInfo.x;var y=event.clientY-this.dragInfo.y;if(this.dragInfo.zoom){var cp=this.getClickPosition(event);if(x<0)
this.zoomWin.style.left=(-parseInt(this.imgDiv.style.left)+cp.x)+"px";if(y<0)
this.zoomWin.style.top=(-parseInt(this.imgDiv.style.top)+cp.y)+"px";this.zoomWin.style.width=Math.abs(x)+"px";this.zoomWin.style.height=Math.abs(y)+"px";}else{this.panTiles(x,y);}
return false;}
function handleKey(map,event){if(event.ctrlKey||event.altKey)
return true;var oldKeyTimerID=keyTimerID;var keyCode=event.keyCode;var keyHold=keysHeld[keyCode];if(keyHold)
return false;keysHeld[keyCode]=true;var i;switch(keyCode){case 37:keyTimerID=map.mapPan("left",keyHold);break;case 38:keyTimerID=map.mapPan("up",keyHold);break;case 39:keyTimerID=map.mapPan("right",keyHold);break;case 40:keyTimerID=map.mapPan("down",keyHold);break;case 33:map.focusPrevPoint();return false;case 34:map.focusNextPoint();return false;case 36:map.focusPoint(0,true);return false;case 35:map.focusPoint(map.overlays.length-1,true);return false;case 32:case 13:preventDefault(event);window.setTimeout(function(){map.showFocusedInfoBox();},100);return false;case 43:case 187:case 107:case 61:keyTimerID=map.mapZoom(map.zoomLevel-1);break;case 45:case 189:case 109:keyTimerID=map.mapZoom(map.zoomLevel+1);break;case 48:map.overlayMode=OVERLAY_MODE_ALL;var overlayPos=map.getOverlayPos();if(overlayPos!=undefined){map.setCenter({lat:overlayPos.lat,lon:overlayPos.lon});map.setZoom(overlayPos.zoom);}else{map.setCenter({lat:0,lon:0});map.setZoom(mapsInfo.length);}
map.focusPoint(0,false);keyTimerID=map.mapZoom(overlayPos.zoom);break;case 49:for(i=1;i<mapsInfo.length;i++){keyTimerID=map.mapZoom(i);if(keyTimerID!=undefined)
break;}
break;case 72:case 104:map.overlayMode=(map.overlayMode+1)%OVERLAY_MODE_COUNT;switch(map.overlayMode){case OVERLAY_MODE_NONE:map.toggleOverlayDiv(false);break;case OVERLAY_MODE_POINTS:map.toggleOverlayDiv(true);hidePath();break;case OVERLAY_MODE_ALL:map.toggleOverlayDiv(true);renderPaths(undefined,map);break;default:log.error("Invalid overlay mode: "+map.overlayMode);break;}
break;case 27:map.hideAllInfoBoxes();break;default:return true;}
if(keyTimerID!=undefined&&oldKeyTimerID!=undefined){window.clearTimeout(oldKeyTimerID);}
return false;}
function handleTileImageError(event){this.src=document.map.mapInfo.imgNoTile;}
function handleTileOverlayImageError(event){this.src=this.imgRoot+"trans.png";}
function getClickPosition(event){var offset={left:this.div.offsetLeft,top:this.div.offsetTop};var elt=this.div.offsetParent;while(elt!=undefined){offset.left+=elt.offsetLeft;offset.top+=elt.offsetTop;elt=elt.offsetParent;}
var scrollLeft=window.pageXOffset;if(scrollLeft==undefined||scrollLeft===0)
scrollLeft=window.document.documentElement.scrollLeft;if(scrollLeft==undefined||scrollLeft===0)
scrollLeft=window.document.body.scrollLeft;var scrollTop=window.pageYOffset;if(scrollTop==undefined||scrollTop===0)
scrollTop=window.document.documentElement.scrollTop;if(scrollTop==undefined||scrollTop===0)
scrollTop=window.document.body.scrollTop;var x=event.clientX+scrollLeft-offset.left;var y=event.clientY+scrollTop-offset.top;return{x:x,y:y};}}
if(USE_OLD_MAPS){var iconCache=[];function MapInfo(name,level,numTiles,tileSize,bounds,urlPatterns){this.name=name;this.level=level;this.numTiles={rows:numTiles.rows,cols:numTiles.cols};this.tileSize=tileSize;this.urlPatterns=urlPatterns;if(bounds!=undefined){this.bounds={north:bounds.north,west:bounds.west,south:bounds.south,east:bounds.east};}
var cached=false;var i;for(i=0;i<iconCache.length;i++){if(iconCache[i].size==tileSize){this.imgLoading=iconCache[i].icons["loading"].src;this.imgNoTile=iconCache[i].icons["notile"].src;cached=true;break;}}
if(!cached){this.imgLoading=getIconTile(this.imgRoot,"loading",tileSize);this.imgNoTile=getIconTile(this.imgRoot,"notile",tileSize);var iconCacheItem={size:tileSize,icons:[]};iconCacheItem.icons["loading"]=new Image();iconCacheItem.icons["loading"].src=this.imgLoading;iconCacheItem.icons["notile"]=new Image();iconCacheItem.icons["notile"].src=this.imgNoTile;iconCache.push(iconCacheItem);}
this.resolution=computeResolution(numTiles.cols,tileSize);}}
function Map(divID,overlayURL,settings){this.getCenter=getCenter;this.getPosition=getPosition;this.getOverlays=getOverlays;this.addOverlay=addOverlay;this.removeOverlay=removeOverlay;this.removeOverlays=removeOverlays;this.initOverlays=initOverlays;this.getOverlayPos=getOverlayPos;this.renderPhotoPlacemarks=renderPhotoPlacemarks;this.mapCenter=mapCenter;this.mapCenterTo=mapCenterTo;this.mapAddListener=mapAddListener;this.mapFireEvent=mapFireEvent;this.mapClick=mapClick;this.getBounds=getBounds;this.setBounds=setBounds;this.animatePan=animatePan;this.slideMap=slideMap;this.openGallery=openGallery;this.closeGallery=closeGallery;this.showInfoBox=showInfoBox;this.showFocusedInfoBox=showFocusedInfoBox;this.hideAllInfoBoxes=hideAllInfoBoxes;this.panInfoBox=panInfoBox;this.toggleOverlayDiv=toggleOverlayDiv;this.focusPoint=focusPoint;this.focusNextPoint=focusNextPoint;this.focusPrevPoint=focusPrevPoint;this.focusTrack=focusTrack;this.unfocusTrack=unfocusTrack;this.refocus=refocus;this.setMapState=setMapState;this.getMapState=getMapState;this.snapOverlayToTrack=snapOverlayToTrack;this.getEnvelope=getEnvelope;this.addMapItems=addMapItems;this.formatOverlayURL=formatOverlayURL;this.stopLive=stopLive;this.startLive=startLive;if(USE_OLD_MAPS){this.initMap=initMap;this.getDimension=getDimension;this.initZoomControl=initZoomControl;this.updateZoomControl=updateZoomControl;this.initTiles=initTiles;this.setTiles=setTiles;this.setTileOverlaySrc=setTileOverlaySrc;this.setImgPos=setImgPos;this.setCenter=setCenter;this.setZoom=setZoom;this.mapPan=mapPan;this.mapZoom=mapZoom;this.mapZoomWheel=mapZoomWheel;this.renderCapitals=renderCapitals;this.renderPaths=renderPaths;this.renderVMLPath=renderVMLPath;this.renderCanvasPath=renderCanvasPath;this.panTiles=panTiles;this.getTileIndex=getTileIndex;this.getMapTile=getMapTile;this.flipMapTile=flipMapTile;this.dragStart=dragStart;this.dragStop=dragStop;this.dragMove=dragMove;this.getClickPosition=getClickPosition;}
if(!initialized)
init();var canOverrideImgRoot=true;if(settings!=undefined&&settings!=undefined){this.settings=settings;if(typeof settings.imgRoot=='string'&&settings.imgRoot!==null&&settings.imgRoot.length>0)canOverrideImgRoot=false;}else{this.settings=MAP_DEFAULT_SETTINGS;}
this.tracks=[];if(overlayURL){if(!isArray(overlayURL))
overlayURL=[overlayURL];for(var i=0;i<overlayURL.length;i++){if(overlayURL[i]==undefined)continue;this.tracks[i]={overlayURL:overlayURL[i]};this.tracks[i].liveIconURL=LIVE_TRACKING_ICONS[i%LIVE_TRACKING_ICONS.length];this.tracks[i].liveIconDim=LIVE_TRACKING_ICONS_DIM[i%LIVE_TRACKING_ICONS_DIM.length];this.tracks[i].showtrack=true;this.tracks[i].timeoffset=null;this.tracks[i].lastmodified=null;this.tracks[i].tripentrylastmodified=null;this.tracks[i].tripentryellastmodified=null;}}
for(i=0;i<this.tracks.length;i++){var showtrack=(this.settings.showtracks&&this.settings.showtracks.length==this.tracks.length)?this.settings.showtracks[i]:true;this.tracks[i].showtrack=showtrack;}
if(this.settings.playback!=undefined&&this.settings.playback.length==this.tracks.length){for(i=0;i<this.settings.playback.length;i++){this.tracks[i].playback=this.settings.playback[i];this.playbackMode=true;}}
this.mapType=G_SATELLITE_MAP;if(this.settings.mapType!=undefined){this.mapType=this.settings.mapType;}
getRootWindow().livemode=this.settings.live;this.imgRoot=this.settings.imgRoot;if(this.imgRoot.length>0&&this.imgRoot.charAt(this.imgRoot.length-1)!='/'){this.imgRoot+='/';}
this.galleryFrameUrlPrefix=typeof this.settings.galleryFrameUrlPrefix=='string'&&this.settings.galleryFrameUrlPrefix!==null&&this.settings.galleryFrameUrlPrefix.length>0?this.settings.galleryFrameUrlPrefix:MAP_DEFAULT_SETTINGS.galleryFrameUrlPrefix;var ttg=window.TT_Global;if(ttg!=undefined){if(canOverrideImgRoot&&typeof ttg.imagePath=='string'){this.imgRoot=ttg.imagePath+"../../../jsmap/images/";}
if(typeof ttg.galleryUrl=='string'&&ttg.galleryUrl.length>0){this.proxyURL=ttg.galleryUrl;}}
this.infoBoxShown=false;this.div=document.getElementById(divID);if(this.div==undefined)
return;if(document.maps==undefined)
document.maps=[];document.maps[divID]=this;if(!USE_GOOGLE_MAPS){if(this.div.style.position!="absolute"&&this.div.style.position!="relative"){var currStyle=this.div.currentStyle;if(currStyle==undefined||(currStyle.position!="absolute"&&currStyle.position!="relative")){this.div.style.position="relative";}}}
this.w=this.div.clientWidth;this.h=this.div.clientHeight;this.divID=divID;this.pos=undefined;this.center={lat:0,lon:0};this.zoomLevel=1;this.overlays=[];this.overlayIndex=0;this.pathText=undefined;this.pathsCoord=undefined;this.pathsPos=undefined;this.pathsPosZoom=undefined;this.placemarkCoord=undefined;this.placemarkPos=undefined;this.selectedPoint=-1;if(this.settings.allowControl==undefined||this.settings.allowControl||this.settings.slideMap){this.div.map=this;document.map=this;}
if(USE_OLD_MAPS){if(!this.settings.miniMap){if(this.settings.showHelp==undefined||this.settings.showHelp){var helpButton=new Image();helpButton.id="HelpButton";helpButton.alt="Help";helpButton.title="Help";helpButton.src=this.imgRoot+"help.png";helpButton.style.zIndex=ZINDEX_NAVIGATION;helpButton.onclick=function(){toggleMapHelpWin();};helpButton.style.border="none";this.div.appendChild(helpButton);var helpDiv=document.createElement("div");helpDiv.className="HelpWin";helpDiv.id="HelpWin";helpDiv.style.zIndex=ZINDEX_NAVIGATION;helpDiv.style.visibility="hidden";helpDiv.style.display="none";var helpWin=document.createElement("iframe");helpWin.border="0";helpWin.className="HelpWin";helpWin.src=this.galleryFrameUrlPrefix+"maphelp.html";helpDiv.appendChild(helpWin);this.div.appendChild(helpDiv);}}
var imgDiv=document.createElement("div");imgDiv.draggable=true;imgDiv.style.width=this.w+"px";imgDiv.style.height=this.h+"px";imgDiv.style.left="0px";imgDiv.posX=0;imgDiv.style.top="0px";imgDiv.posY=0;imgDiv.style.position="absolute";imgDiv.style.zIndex=ZINDEX_MAP;this.div.appendChild(imgDiv);this.imgDiv=imgDiv;var ovrDiv=document.createElement("div");ovrDiv.draggable=true;ovrDiv.style.width=this.w+"px";ovrDiv.style.height=this.h+"px";ovrDiv.style.left="0px";ovrDiv.style.top="0px";ovrDiv.style.position="absolute";ovrDiv.style.zIndex=ZINDEX_OVERLAY;imgDiv.appendChild(ovrDiv);this.ovrDiv=ovrDiv;var zoomWin=document.createElement("div");zoomWin.style.position="absolute";zoomWin.style.visibility="hidden";zoomWin.style.width="0px";zoomWin.style.height="0px";zoomWin.style.left="0px";zoomWin.style.top="0px";zoomWin.style.border="2px dashed #ffffff";zoomWin.style.zIndex=ZINDEX_OVERLAY;this.zoomWin=zoomWin;imgDiv.appendChild(zoomWin);this.dragInfo={drag:false,zoom:false,lastTime:-1,x:undefined,y:undefined,overMap:false,clickedMap:false};if(this.settings.allowControl==undefined||this.settings.allowControl){if(!DEBUG_TITLE)
this.div.oncontextmenu=handleEvent;this.div.onmousedown=handleEvent;this.div.onmouseup=handleEvent;this.div.onmousemove=handleEvent;this.div.onmouseover=handleEvent;this.div.onmouseout=handleEvent;this.div.ondblclick=handleEvent;document.onmouseout=handleEvent;document.onmouseup=handleEvent;document.onkeyup=handleKeyEvent;document.onkeydown=handleKeyEvent;document.onkeypress=handleKeyEvent;if(window.addEventListener){window.addEventListener("DOMMouseScroll",handleEvent,false);}else{document.onmousewheel=handleEvent;}}else{this.div.onmousedown=function(){return false;};this.div.oncontextmenu=function(){return false;};}
if(!IE){_FF_TEXTAREA=document.createElement("textarea");_FF_TEXTAREA.style.visibility="hidden";_FF_TEXTAREA.style.width="0px";_FF_TEXTAREA.style.height="0px";document.body.appendChild(_FF_TEXTAREA);}
this.overlayMode=OVERLAY_MODE_ALL;this.initMap(overlayURL);this.mapFireEvent(MAP_EVENT_INIT);}
if(USE_GOOGLE_MAPS){this.gmap=new GoogleMap(this);if(this.tracks.length>0){this.addMapItems(this.tracks[0],true);if(this.tracks.length>1)
initOtherTracks(this);}else{this.gmap.initEmptyMap(this);}}}
function initOtherTracks(map){if(map.galleryCreated){for(var i=1;i<map.tracks.length;i++)
map.addMapItems(map.tracks[i],true);}else{window.setTimeout(function(){initOtherTracks(map);},500);}}
if(USE_OLD_MAPS){function MapTile(img,overlay,pos,tidx){this.img=img;this.overlay=overlay;this.pos=pos;this.tidx=tidx;}}
function Overlay(parentMap,id,index,url,dim,coord,location,title,divId,shareDiv,locationcodes){this.id=id;this.index=index;this.location=location;if(locationcodes!=undefined){this.country=locationcodes.country;this.state=locationcodes.state;this.setlocationselectable=true;}
this.title=title;this.coord=coord;this.url=url;this.divId=divId;if(divId!=undefined){this.handler=function(){parentMap.showInfoBox(divId);};}
if(USE_GOOGLE_MAPS){return;}
var iconDiv=document.createElement("div");iconDiv.style.position="absolute";iconDiv.style.visibility="hidden";if(dim!=undefined){iconDiv.style.width=dim.w+"px";iconDiv.style.height=dim.h+"px";}
iconDiv.style.fontSize="1pt";iconDiv.style.zIndex=ZINDEX_OVERLAY;iconDiv.id=id;var img=new Image();this.dim=dim;if(dim!=undefined){img.width=dim.w;img.height=dim.h;img.style.width=img.width+"px";img.style.height=img.height+"px";}
img.src=url;img.id=id;img.title="";if(location!=undefined&&title!=undefined){if(location!=title)
img.title=location+": "+title;else
img.title=location;}else if(location!=undefined){img.location=location;}else if(title!=undefined){img.title=title;}
img.title=(index+1)+". "+img.title;img.alt=img.title;img.style.border="none";img.draggable=true;this.img=img;if(divId!=undefined){var elt=document.getElementById(divId);if(elt!=undefined){if(!shareDiv){var eltCopy=elt.cloneNode(true);parentMap.div.appendChild(eltCopy);eltCopy.style.zIndex=ZINDEX_INFO_BOX;elt.id="__"+elt.id;}
iconDiv.map=parentMap;if(parentMap.settings==undefined||parentMap.settings.showGallery==undefined||parentMap.settings.showGallery){if(!parentMap.settings.miniMap){iconDiv.onclick=overlayClick;iconDiv.style.cursor="pointer";}}}}
if(parentMap.settings.overlayOpacity>0)
iconDiv.style.opacity=parentMap.settings.overlayOpacity;iconDiv.appendChild(img);iconDiv.draggable=true;if(IE){iconDiv.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+
img.src+"',sizingMethod='scale')";iconDiv.title=img.alt;iconDiv.removeChild(img);}
parentMap.ovrDiv.appendChild(iconDiv);this.iconDiv=iconDiv;if(location!=undefined&&location!==""){this.locDiv=document.createElement("div");this.locDiv.style.position="absolute";this.locDiv.style.visibility="hidden";this.locDiv.style.zIndex=ZINDEX_OVERLAY;this.locDiv.className=(parentMap.settings.miniMap?"LocationMini":"Location")+" "+
(parentMap.settings.miniMap?"LocationShadowMini":"LocationShadow");this.locDiv.draggable=true;this.locDiv.appendChild(document.createTextNode(location));var locDivUpper=document.createElement("div");locDivUpper.style.position="absolute";locDivUpper.style.top="0px";locDivUpper.style.left="0px";locDivUpper.style.zIndex=ZINDEX_OVERLAY+1;locDivUpper.className=(parentMap.settings.miniMap?"LocationMini":"Location");locDivUpper.appendChild(document.createTextNode(location));this.locDiv.appendChild(locDivUpper);locDivUpper.draggable=true;if(parentMap.settings.overlayOpacity>0)
this.locDiv.style.opacity=parentMap.settings.overlayOpacity;if(parentMap.settings==undefined||parentMap.settings.showGallery==undefined||parentMap.settings.showGallery){if(!parentMap.settings.miniMap){locDivUpper.divID=id;locDivUpper.onclick=overlayClick;locDivUpper.style.cursor="pointer";locDivUpper.className+=" LocationHover";}}
parentMap.ovrDiv.appendChild(this.locDiv);}}
function init(){try{if(initialized)
return;if(document.location.href.indexOf("#jslog")!=-1)
log.enable();if(USE_OLD_MAPS){initMapsInfo();}
initialized=true;}catch(e){log.error("init",e);throw e;}
window.focus();}
function initOverlays(){var i,j;var o,tmpo;var show;var iconPos;var map=this;if(this.overlays.length>2){tmpo=this.overlays[1];this.overlays[1]=this.overlays[this.overlays.length-1];this.overlays[this.overlays.length-1]=tmpo;}
for(i=0;i<this.overlays.length;i++){o=this.overlays[i];var pos=this.getPosition(o.coord);if(pos!=undefined){if(o.iconDiv!=undefined){var iconX=Math.round(pos.x-o.dim.w/2+1);var iconY=Math.round(pos.y-o.dim.h/2+1);o.iconPos={x:iconX,y:iconY};o.iconDiv.style.left=iconX+"px";o.iconDiv.style.top=iconY+"px";show=true;if(i>0){for(j=0;j<i;j++){iconPos=this.overlays[j].iconPos;if(iconPos!=undefined&&Math.abs(iconPos.x-iconX)<o.dim.w/2&&Math.abs(iconPos.y-iconY)<o.dim.h/2){show=false;o.iconPos=undefined;break;}}}
if(show)
o.iconDiv.style.visibility="visible";else
o.iconDiv.style.visibility="hidden";if(o.divId==this.showOverlayId){overlayTarget=o;window.setTimeout(function(){map.showInfoBox(o.divId);},1000);this.showOverlayId=undefined;}}
if(o.locDiv!=undefined){var locX=Math.round(pos.x+o.dim.w);var locY=Math.round(pos.y-o.dim.h/2);var locW=(o.location!=undefined?o.location.length*LOC_FONT_SIZE/2:0);o.locDiv.style.left=locX+"px";o.locDiv.style.top=locY+"px";o.locPos={x:locX,y:locY,w:locW,h:LOC_FONT_SIZE};}}}
for(i=0;i<this.overlays.length;i++){o=this.overlays[i];if(o.locDiv!=undefined){show=true;if(i>0){for(j=0;j<this.overlays.length;j++){if(j==i)
continue;iconPos=this.overlays[j].iconPos;if(iconPos!=undefined&&iconPos.x+o.dim.w>=o.locPos.x&&iconPos.x<=o.locPos.x+o.locPos.w&&iconPos.y>=o.locPos.y&&iconPos.y<=o.locPos.y+o.locPos.h){show=false;break;}}
for(j=i-1;j>=0;j--){if(this.overlays[j].locPos!=undefined&&Math.abs(o.locPos.y-this.overlays[j].locPos.y)<o.locPos.h&&Math.abs(o.locPos.x-this.overlays[j].locPos.x)<o.locPos.w){show=false;break;}}}
if(show){o.locDiv.style.visibility="visible";}else{o.locDiv.style.visibility="hidden";o.locPos=undefined;}}}
if(this.overlays.length>2){tmpo=this.overlays[1];this.overlays[1]=this.overlays[this.overlays.length-1];this.overlays[this.overlays.length-1]=tmpo;}
if(this.overlayMode!=OVERLAY_MODE_NONE)
this.toggleOverlayDiv(true);this.renderCapitals();if(this.pathText!=undefined){window.setTimeout(function(){renderPaths(undefined,map);},200);}}
function mapCenter(event){var cp=this.getClickPosition(event);var dx=this.w/2-cp.x;var dy=this.h/2-cp.y;this.animatePan(dx,dy);return false;}
function mapCenterTo(coord){if(USE_GOOGLE_MAPS){this.gmap.mapCenterTo(coord);}else{var cpos=this.getPosition(this.getCenter());var opos=this.getPosition(coord);if(cpos==undefined||opos==undefined){return;}
var dx=cpos.x-opos.x;var dy=cpos.y-opos.y;if(Math.abs(dx)<this.w&&Math.abs(dy)<this.h){this.setImgPos();this.animatePan(dx,dy);}else{this.setCenter(coord);this.initTiles();this.setTiles();}}}
var animateTimerID=undefined;function animatePan(x,y,step){if(USE_GOOGLE_MAPS){this.gmap.pan(x,y);return;}
if(x===0&&y===0)
return;if(step==undefined){step=0;if(animateTimerID!=undefined){window.clearTimeout(animateTimerID);animateTimerID=undefined;}}
var maxSteps=Math.round(ANIMATE_PAN_TIME/ANIMATE_PAN_PAUSE);maxSteps=Math.min(maxSteps,Math.max(Math.abs(x/10),Math.abs(y/10)));maxSteps=Math.ceil(maxSteps);if(step>=maxSteps){this.setImgPos();this.setCenter(this.getCenter());var c=this.getCenter();var p=this.getPosition(c);renderPaths(undefined,this);this.renderCapitals();this.setMapState();animateTimerID=undefined;return;}
var px=x*(step+1)/maxSteps;var py=y*(step+1)/maxSteps;this.panTiles(px,py);var map=this;var func=function(){map.animatePan(x,y,step+1);};var pause=((Math.abs((step+1)/maxSteps-0.5))+0.5)*ANIMATE_PAN_PAUSE;animateTimerID=window.setTimeout(func,pause);}
function getCenter(){if(this.center==undefined||this.center.pos==undefined)
return undefined;var lat=this.center.lat-(this.center.pos.y-this.pos.y)*180/this.mapInfo.tileSize/this.numTiles.rows;var lon=this.center.lon+(this.center.pos.x-this.pos.x)*360/this.mapInfo.tileSize/this.numTiles.cols;return{lat:lat,lon:lon};}
function getBounds(){var center=this.getCenter();var off=(360*this.w/2/this.mapInfo.tileSize/this.numTiles.cols);var west=center.lon-off;var east=center.lon+off;off=(180*this.h/2/this.mapInfo.tileSize/this.numTiles.rows);var south=center.lat-off;var north=center.lat+off;return{west:west,south:south,east:east,north:north};}
function setBounds(coords){if(coords==undefined||coords.length===0)
return;if(USE_GOOGLE_MAPS){this.gmap.setBounds(coords);}else{throw"Feature not implemented";}}
function getPosition(coord){if(this.getPosCache==undefined)
this.getPosCache=new Object();if(this.getPosCache.zoom!=this.zoomLevel){if(this.tiles==undefined||coord==undefined||coord.lat==undefined)
return undefined;var t=this.tiles[0][0];if(t.img.src==undefined||t.img.src==="")
return undefined;var ti=t.tidx.i;var tj=t.tidx.j;var lat=ti*180/this.numTiles.rows;var lon=tj*360/this.numTiles.cols;lat-=90-coord.lat;lon-=coord.lon+180;lat/=180;lon/=360;var x=parseInt(t.img.style.left)-lon*this.numTiles.cols*this.mapInfo.tileSize;var y=parseInt(t.img.style.top)-lat*this.numTiles.rows*this.mapInfo.tileSize;this.getPosCache.zoom=this.zoomLevel;this.getPosCache.w=this.numTiles.cols*this.mapInfo.tileSize;this.getPosCache.h=this.numTiles.rows*this.mapInfo.tileSize;this.getPosCache.c=coord;this.getPosCache.p={x:x,y:y};}
return{x:this.getPosCache.p.x+(coord.lon-this.getPosCache.c.lon)/360*this.getPosCache.w,y:this.getPosCache.p.y-(coord.lat-this.getPosCache.c.lat)/180*this.getPosCache.h};}
function getOverlays(req,data){var map=document.maps[data.divID];if(req==undefined){var overlayURL;overlayURL=map.formatOverlayURL(data.track);if(overlayURL!=undefined)
getResponse(overlayURL,true,true,getOverlays,data);return;}else if(req.readyState!=4){return;}
var response=req.responseXML;if(response!=undefined){var overlays=getElementsByTagName(response,"feed");}
if(overlays==undefined){return;}
var i,j,n;var liveTracking=getElementsByTagName(overlays[0],"tt:live");if(liveTracking==undefined||liveTracking.length===0){return;}else{liveTracking=liveTracking[0];var tmp=parseInt(liveTracking.getAttribute("lastTracksampleTime"));if(tmp!=NaN&&tmp>=data.track.timeoffset)
data.track.timeoffset=tmp;tmp=parseInt(liveTracking.getAttribute("tripLastModified"));if(tmp!=NaN&&tmp>=data.track.lastmodified)
data.track.lastmodified=tmp;tmp=parseInt(liveTracking.getAttribute("lastTripEntryTime"));if(tmp!=NaN&&tmp>=data.track.tripentrylastmodified)
data.track.tripentrylastmodified=tmp;tmp=parseInt(liveTracking.getAttribute("lastTripEntryElementTime"));if(tmp!=NaN&&tmp>=data.track.tripentryellastmodified)
data.track.tripentryellastmodified=tmp;data.track.livestatus=parseInt(liveTracking.getAttribute("live"));data.track.live=(data.track.livestatus!=NaN&&data.track.livestatus!==LIVE_TRACKING_OFF);data.track.updated=false;if(data.track.live){getRootWindow().livemode=true;map.settings.live=true;}
if(data.getonlylive&&!data.track.live)
return;if(data.getonlylive&&data.track.live)
data.track.updated=true;}
var prevOverlaysLength=map.overlays.length;if(map.pathText!=undefined)
var prevNumberOfTracks=map.pathText.length;map.overlaysXML=joinLists(map.overlaysXML,overlays);data.track.id=getFirstElementsValue(overlays[0],"id");if(map.settings.showTitle&&!USE_GOOGLE_MAPS){var mapTitle=getFirstElementsValue(overlays[0],"title");var titleDiv=document.createElement("div");titleDiv.style.position="absolute";titleDiv.style.left="5px";titleDiv.style.top="5px";titleDiv.style.zIndex=ZINDEX_OVERLAY-1;titleDiv.className="Location LocationShadow";titleDiv.style.fontSize="15px";titleDiv.draggable=true;titleDiv.appendChild(document.createTextNode(mapTitle));var titleDivUpper=document.createElement("div");titleDivUpper.style.position="absolute";titleDivUpper.style.top="0px";titleDivUpper.style.left="0px";titleDivUpper.style.zIndex=ZINDEX_OVERLAY;titleDivUpper.className="Location";titleDivUpper.style.fontSize="15px";titleDivUpper.appendChild(document.createTextNode(mapTitle));titleDivUpper.draggable=true;titleDiv.appendChild(titleDivUpper);map.div.appendChild(titleDiv);}
var nothingToUpdate=true;var entriesToAdd=[];for(i=0;i<overlays.length;i++){var entries=getElementsByTagName(overlays[i],"entry");if(entries.length>0)
nothingToUpdate=false;for(j=0;j<entries.length;j++){var e=entries[j];entriesToAdd.push(e);var title=getFirstElementsValue(entries[j],"title");var location=undefined;var pos=title.lastIndexOf(" @ ");if(pos!=-1){location=title.substring(pos+3);var pos2=location.indexOf(",");if(pos2!=-1){location=location.substring(0,pos2);}
title=title.substring(0,pos);}
if(title==="")
title=undefined;if(location==="")
location=undefined;var coord=getFirstElementsValue(entries[j],"gml:pos");var country=getFirstElementsValue(entries[j],"tt:country");var state=getFirstElementsValue(entries[j],"tt:state");var triptrackerId=getFirstElementsValue(entries[j],"id");var entryexists=false;if(data.getonlylive){for(n=0;n<map.overlays.length;n++){if(map.overlays[n].triptrackerId!=undefined&&map.overlays[n].triptrackerId==triptrackerId){entryexists=true;break;}}}
if(entryexists){continue;}
if(coord!=undefined&&coord.length>0){map.addOverlay(coord,location,title,undefined,GALLERY_DIV_ID,true,{country:country,state:state},triptrackerId,data.track.showtrack);}}}
data.track.trackCoords=[];for(j=0;j<overlays.length;j++){var posLists=getElementsByTagName(overlays[j],"gml:posList");if(posLists.length>0){nothingToUpdate=false;if(map.pathText==undefined)
map.pathText=[];for(i=0;i<posLists.length;i++){var pathText=getElementValue(posLists[i]);pathText=trim(pathText);if(pathText===null||pathText.length===0)
continue;map.pathText.push(pathText);if(map.settings.playback){data.track.trackCoords=joinLists(data.track.trackCoords,parseCoordinates(pathText));}}}
var trackLogDetails=getElementsByTagName(overlays[j],"tt:trackLog");var time;if(map.trackLogDetails==undefined)
map.trackLogDetails=[];data.track.trackTimes=[];if(trackLogDetails.length>0){for(i=0;i<trackLogDetails.length;i++){var trackLogText=getElementValue(trackLogDetails[i]);trackLogText=trim(trackLogText);if(trackLogText.length>0)
trackLogText=trackLogText.split(/\s+/);for(i=0;i<trackLogText.length;i+=2){time=trackLogText[i];var elevation=parseFloat(trackLogText[i+1]);map.trackLogDetails.push({time:time,elevation:elevation});if(map.settings.playback){var parsedtime=(parseISOTime(time)).getTime();data.track.trackTimes.push(parsedtime);}}}}}
if(data.track.playback&&data.track.trackCoords.length!=data.track.trackTimes.length){log.error("Track coordinates and times do not match");map.playbackMode=false;}
if(overlays.length>0&&map.settings!=undefined&&!map.settings.miniMap&&(map.settings.showGallery==undefined||map.settings.showGallery)){var galleryChanged=false;if(map.gallery){if(entriesToAdd.length>0)
galleryChanged=map.gallery.incrementalAddPhotos(entriesToAdd);}
else{var photoDiv=document.createElement("div");photoDiv.id=GALLERY_DIV_ID;photoDiv.style.zIndex=ZINDEX_INFO_BOX;photoDiv.style.visibility="hidden";photoDiv.style.display='none';photoDiv.style.width=GALLERY_W+"px";photoDiv.style.height=GALLERY_H+"px";photoDiv.style.left='auto';photoDiv.style.right='0';var photoFrame=document.createElement("iframe");photoFrame.id="GalleryFrame";photoFrame.frameBorder=0;photoFrame.scrolling="no";photoFrame.allowTransparency=true;photoFrame.name="galleryFrame";if(map.proxyURL!=undefined){photoFrame.src=map.proxyURL;}else{photoFrame.src=map.galleryFrameUrlPrefix+"gallery/gallery.html";}
photoDiv.appendChild(photoFrame);if(typeof map.settings.galleryContainer=='object'&&map.settings.galleryContainer!==null)
{map.settings.galleryContainer.appendChild(photoDiv);}
else if(!USE_GOOGLE_MAPS){map.div.appendChild(photoDiv);}else{document.body.appendChild(photoDiv);}}}
if(data.getonlylive&&nothingToUpdate){autoUpdate(map,data.track);return;}
if(USE_GOOGLE_MAPS){map.gmap.initMap(map,prevOverlaysLength,prevNumberOfTracks,data.track,data.refocus,galleryChanged);}else{map.initMap(undefined);}}
function addOverlay(strCoord,location,title,icon,divId,shareDiv,locationcodes,triptrackerId,visible){if(visible==undefined)
visible=true;var coord=undefined;if(strCoord==undefined)
return undefined;var tokens=strCoord.split(" ");coord={lat:parseFloat(tokens[0]),lon:parseFloat(tokens[1])};if(!validCoordinates(coord.lat,coord.lon))
return undefined;var dim={w:12,h:12};if(this.settings.miniMap){dim={w:8,h:8};}
var index=this.overlays.length;var id="Overlay"+index;this.overlayIndex++;if(icon==undefined||icon==="")
icon="point.png";if(icon.indexOf("/")==-1)
icon=this.imgRoot+"map/"+icon;var overlay=new Overlay(this,id,index,icon,dim,coord,location,title,divId,shareDiv,locationcodes);overlay.triptrackerId=triptrackerId;this.overlays.push(overlay);var pos=this.getPosition(coord);if(pos!=undefined){overlay.iconDiv.style.visibility="visible";overlay.iconDiv.style.left=Math.round(pos.x-dim.w/2+1)+"px";overlay.iconDiv.style.top=Math.round(pos.y-dim.h/2+1)+"px";if(overlay.locDiv!=undefined){var locX=Math.round(pos.x+dim.w);var locY=Math.round(pos.y-dim.h/2);var locW=(overlay.location!=undefined?overlay.location.length*LOC_FONT_SIZE/2:0);overlay.locDiv.style.left=locX+"px";overlay.locDiv.style.top=locY+"px";overlay.locPos={x:locX,y:locY,w:locW,h:LOC_FONT_SIZE};overlay.locDiv.style.visibility="visible";}}
if(USE_GOOGLE_MAPS&&shareDiv==undefined&&visible){return this.gmap.addOverlay(index,new GLatLng(coord.lat,coord.lon),location,title,icon,locationcodes);}
return id;}
function addMapItems(track,refocus,getonlylive){var toAdd;if(!isArray(track)){toAdd=[track];}else{toAdd=track;}
for(var i=0;i<toAdd.length;i++){this.getOverlays(undefined,{track:toAdd[i],divID:this.divID,refocus:refocus,getonlylive:getonlylive});}}
function formatOverlayURL(track){var overlayURL=track.overlayURL;if(overlayURL==undefined)
return undefined;if(overlayURL.indexOf("?")==-1)
overlayURL+="?type=";else
overlayURL+="&type=";if(this.settings.miniMap&&!this.settings.slideMap)
overlayURL+="minimap";else if(this.settings.slideMap)
overlayURL+="badge";else
overlayURL+="map";if(track.live){overlayURL+="&startTime="+track.timeoffset;overlayURL+="&modified="+track.lastmodified;overlayURL+="&startEntryTime="+track.tripentrylastmodified;overlayURL+="&startElementTime="+track.tripentryellastmodified;}
return overlayURL;}
function stopLive(){for(var i=0;i<this.tracks.length;i++){log.debug("stopping live for track "+i);this.tracks[i].live=false;if(this.tracks[i].updateTimerID){getRootWindow().clearTimeout(this.tracks[i].updateTimerID);}}}
function startLive(){var map=this;for(var i=0;i<this.tracks.length;i++){this.tracks[i].live=true;autoUpdate(map,map.tracks[i]);}}
function snapOverlayToTrack(id){var i,j;var o=undefined;if(id==undefined||this.pathsCoord==undefined)
return undefined;for(i=0;i<this.overlays.length;i++){if(this.overlays[i].id==id){o=this.overlays[i];break;}}
if(o==undefined||o.coord==undefined)
return undefined;var c,dlat,dlon,d;var minD=undefined;var minCoord=undefined;var map=document.map;for(i=0;i<map.pathsCoord.length;i++){for(j=0;j<map.pathsCoord[i].length;j++){c=map.pathsCoord[i][j];dlat=o.coord.lat-c.lat;dlon=o.coord.lon-c.lon;d=dlat*dlat+dlon*dlon;if(minD==undefined||d<minD){minD=d;minCoord=c;}}}
if(minCoord!=undefined){this.removeOverlay(id);var oid=this.addOverlay(minCoord.lat+" "+minCoord.lon,o.location,o.title,o.url,o.locationcodes);return{id:oid,lat:minCoord.lat,lon:minCoord.lon};}
return undefined;}
function removeOverlay(id){if(USE_GOOGLE_MAPS){this.gmap.removeOverlay(id);}else{var i;for(i=this.overlays.length-1;i>=0;i--){if(this.overlays[i].id==id){this.ovrDiv.removeChild(this.overlays[i].iconDiv);if(this.overlays[i].locDiv!=undefined)
this.ovrDiv.removeChild(this.overlays[i].locDiv);this.overlays.splice(i,1);}}}}
function removeOverlays(){var i;for(i=0;i<this.overlays.length;i++){this.removeOverlay(i);}}
function openGallery(tripEntryNumber){if(tripEntryNumber==undefined){tripEntryNumber=0;}else{overlayTarget=undefined;}
if(overlayTarget==undefined){overlayTarget=this.overlays[tripEntryNumber];}
if(overlayTarget==undefined){this.deferredGalleryLoad_TripEntry=tripEntryNumber;this.openGalleryWhenLoaded=true;return;}
this.deferredGalleryLoad_TripEntry=undefined;this.showInfoBox(overlayTarget.divId);}
function showInfoBox(divId,divParam){if(divId==undefined)
return;if(this.settings!=undefined&&this.settings.showGallery!=undefined&&!this.settings.showGallery)
return;if(overlayTarget==undefined){log.error("No overlay target");return;}
var gallery=this.gallery;var elt=document.getElementById(divId);if(divId==GALLERY_DIV_ID){if(elt===null||gallery==undefined||!this.galleryCreated){this.openGalleryWhenLoaded=true;return;}else if(elt==undefined){log.error("No element "+divId);return;}}
if(elt.style.visibility=="visible"){window.setTimeout(function(){gallery.win.focus();},100);if(divParam==undefined){gallery.selectSet(overlayTarget.index);}else{gallery.selectPhoto(overlayTarget.index,divParam);}
return;}
var coord=overlayTarget.coord;this.hideAllInfoBoxes();elt.style.position="absolute";var w=parseInt(elt.style.width);var h=parseInt(elt.style.height);var left=(this.w-w);var top=0;if(USE_GOOGLE_MAPS){if(typeof this.settings.galleryPositionHandler=='function'&&this.settings.galleryPositionHandler!==null)
{this.settings.galleryPositionHandler(elt);}
else if(typeof this.settings.galleryContainer=='object'&&this.settings.galleryContainer!==null)
{elt.style.left='auto';elt.style.right='5px';elt.style.top='2px';}
else{this.gmap.gmap.removeControl(this.gmap.mapControl);this.gmap.gmap.addControl(this.gmap.galleryViewMapControl);this.gmap.gmap.disableDoubleClickZoom();var offset={left:this.div.offsetLeft,top:this.div.offsetTop};var tmpElt=this.div.offsetParent;while(tmpElt!=undefined){offset.left+=tmpElt.offsetLeft;offset.top+=tmpElt.offsetTop;tmpElt=tmpElt.offsetParent;}
left+=offset.left+1;top+=offset.top;elt.style.left=left+"px";elt.style.top=top+"px";}}
else{elt.style.left=left+"px";elt.style.top=top+"px";}
elt.style.display="";elt.style.visibility="visible";var button=document.getElementById("HelpButton");if(button!=undefined)
button.style.visibility="hidden";var zoomCtrl=document.getElementById("ZoomControl");if(zoomCtrl!=undefined)
zoomCtrl.style.visibility="hidden";if(gallery!=undefined){this.doHandleEvents=false;this.div.style.cursor="default";window.setTimeout(function(){gallery.win.focus();},100);if(gallery.centerOffset==undefined)
gallery.centerOffset={x:w/2,y:0};if(divParam==undefined){gallery.selectSet(overlayTarget.index);}else{gallery.selectPhoto(overlayTarget.index,divParam);}}
this.infoBoxShown=true;overlayTarget=undefined;}
function showFocusedInfoBox(){if(this.selectedPoint>=0&&this.selectedPoint<this.overlays.length){overlayTarget=this.overlays[this.selectedPoint];this.showInfoBox(overlayTarget.divId);this.setMapState();}}
function hideInfoBox(divId){var elt=document.getElementById(divId);if(elt==undefined){return;}
if(elt.style.visibility=="visible"){elt.style.visibility="hidden";var button=document.getElementById("HelpButton");if(button!=undefined)
button.style.visibility="visible";var zoomCtrl=document.getElementById("ZoomControl");if(zoomCtrl!=undefined)
zoomCtrl.style.visibility="visible";document.map.doHandleEvents=true;document.map.div.style.cursor="move";window.focus();}}
function panInfoBox(dx){if(this.overlays==undefined||this.overlays.length===0){return;}
var divId=this.overlays[0].divId;var elt=document.getElementById(divId);if(elt==undefined){return;}
elt.style.left=(parseInt(elt.style.left)+dx)+"px";elt.style.width=(parseInt(elt.style.width)-dx)+"px";}
function hideAllInfoBoxes(closeGallery){if(closeGallery){this.gmap.gmap.removeControl(this.gmap.galleryViewMapControl);this.gmap.gmap.addControl(this.gmap.mapControl);this.gmap.gmap.enableDoubleClickZoom();}
var i;for(i=0;i<this.overlays.length;i++)
hideInfoBox(this.overlays[i].divId);this.infoBoxShown=false;}
function hidePath(){var pathDiv=document.getElementById("PathDiv");if(pathDiv!=undefined)
pathDiv.style.visibility="hidden";}
function focusPoint(index,doCenter,doShowInfoBox,centerOffset,photoIndex,fromGallery){var i;if(this.settings!=undefined&&this.settings.showGallery!=undefined&&!this.settings.showGallery){return;}
if(!fromGallery&&this.infoBoxShown&&this.gallery!=undefined){this.gallery.selectSet(index);return;}
if(centerOffset==undefined)
centerOffset={x:0,y:0};for(i=0;i<this.overlays.length;i++){var o=this.overlays[i];if(i==index){if(o.iconDiv!=undefined)
o.iconDiv.style.visibility="visible";if(o.locDiv!=undefined)
o.locDiv.style.visibility="visible";if(o.img!=undefined)
o.img.src=this.imgRoot+"map/point-selected.gif";if(o.iconDiv!=undefined)
o.iconDiv.style.zIndex=ZINDEX_OVERLAY+1;if(o.locDiv!=undefined){o.locDiv.style.zIndex=ZINDEX_OVERLAY+1;o.locDiv.style.fontWeight="bold";o.locDiv.style.backgroundImage="url('"+this.imgRoot+"trans-black.png')";}
this.selectedPoint=i;this.mapFireEvent(MAP_EVENT_CHANGE_ENTRY,{index:i});if(USE_GOOGLE_MAPS){this.gmap.focusPoint(i,photoIndex,doCenter,centerOffset);}else if(doCenter){this.setImgPos();this.setCenter(this.getCenter());var cpos=this.getPosition(this.getCenter());var opos=this.getPosition(this.overlays[i].coord);var dx=cpos.x-opos.x-centerOffset.x;var dy=cpos.y-opos.y-centerOffset.y;if(Math.abs(dx)<2&&Math.abs(dy)<2){}else if(Math.abs(dx)<this.w&&Math.abs(dy)<this.h){this.animatePan(dx,dy);}else{var degOffsetLat=centerOffset.y*180/this.mapInfo.numTiles.rows/this.mapInfo.tileSize;var degOffsetLon=centerOffset.x*360/this.mapInfo.numTiles.cols/this.mapInfo.tileSize;var oCoord=this.overlays[i].coord;this.setCenter({lat:(oCoord.lat+degOffsetLat),lon:(oCoord.lon+degOffsetLon)});this.initTiles();this.setTiles();}}}else{if(o.iconPos==undefined&&o.iconDiv!=undefined){o.iconDiv.style.visibility="hidden";}
if(o.img!=undefined&&o.iconDiv!=undefined){o.img.src=this.imgRoot+"map/point.png";o.iconDiv.style.zIndex=ZINDEX_OVERLAY;}
if(o.locDiv!=undefined){if(o.locPos==undefined){o.locDiv.style.visibility="hidden";}
o.locDiv.style.zIndex=ZINDEX_OVERLAY;o.locDiv.style.fontWeight="normal";o.locDiv.style.textDecoration="none";o.locDiv.style.backgroundImage="none";}
if(USE_GOOGLE_MAPS){this.gmap.unfocusPoint(i);}}
if(index==-1&&this.selectedPoint!=-1){this.gmap.hidePhotomarkers(this.selectedPoint);}}
if(doShowInfoBox){this.showFocusedInfoBox();}}
function focusNextPoint(){if(this.selectedPoint+1>=this.overlays.length)
this.selectedPoint=-1;this.focusPoint(this.selectedPoint+1,true);}
function focusPrevPoint(){if(this.selectedPoint-1<0)
this.selectedPoint=this.overlays.length;this.focusPoint(this.selectedPoint-1,true);}
function focusTrack(index){if(USE_GOOGLE_MAPS){this.gmap.focusTrack(index);}else{log.error("focusTrack() function not implemented");}}
function unfocusTrack(){this.focusTrack(-1);}
function refocus(){this.focusPoint(-1,false);if(USE_GOOGLE_MAPS){this.gmap.refocus();}else{throw"Feature not implemented";}}
function toggleMapHelpWin(){var helpWin=document.getElementById("HelpWin");if(helpWin==undefined)
return;if(helpWin.style.visibility=="visible")
hideMapHelpWin();else
showMapHelpWin();}
function showMapHelpWin(){var helpWin=document.getElementById("HelpWin");if(helpWin==undefined)
return;helpWin.style.display="";helpWin.style.visibility="visible";window.focus();}
function hideMapHelpWin(){var helpWin=document.getElementById("HelpWin");if(helpWin==undefined)
return;helpWin.style.display="none";helpWin.style.visibility="hidden";window.focus();}
function toggleOverlayDiv(visible){if(visible==undefined){if(this.ovrDiv.style.display=="none")
this.ovrDiv.style.display="";else
this.ovrDiv.style.display="none";}else{this.ovrDiv.style.display=visible?"":"none";}}
function slideMap(start){var photos;var centerOffset={x:0,y:-30};if(start){var i;var gallery=new Gallery(undefined);this.gallery=gallery;var viewer=new PhotoViewer(window,false);viewer.badgeMode=true;viewer.setBackground("transparent","#ffffff",false);viewer.setShowToolbar(false);for(i=0;i<gallery.sets.length;i++){photos=gallery.sets[i].photos;if(photos.length>0&&photos[0].thumb!=undefined){var rnd=parseInt(Math.random()*photos.length);var p=photos[rnd].thumb;var pimg=new PhotoImg(undefined,p.src,p.width,p.height);viewer.add(pimg);}else{var blankimg=new PhotoImg(undefined,undefined);viewer.add(blankimg);}}
var map=this;map.focusPoint(0,true,false,centerOffset);viewer.show(0,(SLIDE_PHOTOS?SLIDE_OFFSET:0));viewer.setShowCallback(function(){map.slideMap();});viewer.setEndCallback(function(){viewer.close();map.slideMap(true);});window.setTimeout(function(){viewer.slideShow(true);},1000);}else{if(this.selectedPoint+1>=this.overlays.length)
this.selectedPoint=-1;this.focusPoint(this.selectedPoint+1,true,false,centerOffset);}}
function setMapState(){var i;if(this.settings==undefined||this.settings.storeStateID==undefined)
return;var id=this.settings.storeStateID;var c=this.getCenter();if(c!=undefined){c.lat=Math.round(c.lat*10000)/10000;c.lon=Math.round(c.lon*10000)/10000;}
var overlay=undefined;for(i=0;i<this.overlays.length;i++){var o=this.overlays[i];if(o.divId!=undefined&&document.getElementById(o.divId).style.visibility=="visible"){overlay=o.divId;break;}}
var state="z="+this.zoomLevel;if(c!=undefined)
state+=",lat="+c.lat+",lon="+c.lon;if(this.selectedPoint>=0)
state+=",p="+this.selectedPoint;if(overlay!=undefined)
state+=",show:"+overlay;var mapLink=document.getElementById("MapLink");if(mapLink!=undefined&&mapLink.href!=undefined){var linkState=";"+state;var currState=mapLink.href.match(/;.+/);if(currState!=undefined)
mapLink.href=mapLink.href.replace(currState,linkState);else
mapLink.href+=linkState;}
var found=false;var strIDList=getCookie(STATE_IDS_COOKIE);var idList=[];if(strIDList==undefined||strIDList.length===0){strIDList=id;idList.push(id);}else{idList=strIDList.split(",");for(i=0;i<idList.length;i++){if(idList[i]==id){found=true;break;}}
if(!found){strIDList+=","+id;idList.push(id);}}
if(idList.length>MAX_COOKIE_VALUES){var firstID=strIDList.substring(0,strIDList.indexOf(","));strIDList=strIDList.substring(firstID.length+1);removeCookie(STATE_COOKIE+"."+firstID);}}
function getMapState(){var i;if(this.settings==undefined||this.settings.storeStateID==undefined)
return;var id=this.settings.storeStateID;var url=document.location.href;var state=url.match(/;.+/);if(state!=undefined&&state.length==1){state=state[0];}else{if(false)state=getCookie(STATE_COOKIE+"."+id);}
if(state==undefined||state.length===0)
return;var zoom=state.match(/z=(\d+)/);if(zoom!=undefined&&zoom.length>1){this.setZoom(parseInt(zoom[1]));}
var lat=state.match(/lat=([^,]+)/);var lon=state.match(/lon=([^,]+)/);if(lat!=undefined&&lat.length>1&&lon!=undefined&&lon.length>1){lat=lat[1];lon=lon[1];this.setCenter({lat:parseFloat(lat),lon:parseFloat(lon)});}
var focusP=state.match(/p=(\d+)/);if(focusP!=undefined&&focusP.length>1){this.selectedPoint=parseInt(focusP[1]);}
var overlay=state.match(/show:([^.]+)/);if(overlay!=undefined&&overlay.length>1){for(i=0;i<this.overlays.length;i++){var o=this.overlays[i];if(o.divId==overlay[1]){this.showOverlayId=o.divId;break;}}}}
function getOverlayPos(){var i,c;if(this.overlays==undefined||this.overlays.length===0){var z=mapsInfo.length;for(i=0;i<mapsInfo.length;i++){if(mapsInfo[i].tileSize*mapsInfo[i].numTiles.cols<this.w){z=i+1;break;}}
return{lat:0,lon:0,zoom:z};}
var env=this.getEnvelope();var center={lat:(env.minLat+env.maxLat)/2,lon:(env.minLon+env.maxLon)/2};if(this.settings.slideMap)
center={lat:this.overlays[0].coord.lat,lon:this.overlays[0].coord.lon};var latSpan=(env.maxLat-env.minLat)/180;var lonSpan=(env.maxLon-env.minLon)/360;var zoom=mapsInfo.length;for(i=0;i<mapsInfo.length;i++){if(mapsInfo[i].bounds!=undefined){if(env.minLon<mapsInfo[i].bounds.west||env.maxLon>mapsInfo[i].bounds.east||env.minLat<mapsInfo[i].bounds.south||env.maxLat>mapsInfo[i].bounds.north)
continue;}
if(mapsInfo[i].tileSize*mapsInfo[i].numTiles.cols<this.w/2){continue;}
var xSpan=lonSpan*mapsInfo[i].tileSize*mapsInfo[i].numTiles.cols;var ySpan=latSpan*mapsInfo[i].tileSize*mapsInfo[i].numTiles.rows;if(xSpan<=this.w&&ySpan<=this.h){zoom=i+1;break;}}
return{lat:center.lat,lon:center.lon,zoom:zoom};}
function getEnvelope(){var i;var env={minLat:90,minLon:180,maxLat:-90,maxLon:-180};if(this.overlays!=undefined){for(i=0;i<this.overlays.length;i++){if(this.overlays[i].coord!=undefined&&validCoordinates(this.overlays[i].coord.lat,this.overlays[i].coord.lon)){if(this.overlays[i].coord.lat<env.minLat)
env.minLat=this.overlays[i].coord.lat;if(this.overlays[i].coord.lat>env.maxLat)
env.maxLat=this.overlays[i].coord.lat;if(this.overlays[i].coord.lon<env.minLon)
env.minLon=this.overlays[i].coord.lon;if(this.overlays[i].coord.lon>env.maxLon)
env.maxLon=this.overlays[i].coord.lon;}}}
if(this.pathText!=undefined){for(i=0;i<this.pathText.length;i++){var strCoords=this.pathText[i].split(/\s+/);for(i=0;i<strCoords.length;i+=2){var coord={lat:parseFloat(strCoords[i]),lon:parseFloat(strCoords[i+1])};if(validCoordinates(coord.lat,coord.lon)){if(coord.lat<env.minLat)
env.minLat=coord.lat;if(coord.lat>env.maxLat)
env.maxLat=coord.lat;if(coord.lon<env.minLon)
env.minLon=coord.lon;if(coord.lon>env.maxLon)
env.maxLon=coord.lon;}}}}
if(env.minLat<=env.maxLat&&env.minLon<=env.maxLon)
return env;else
return undefined;}
function renderPhotoPlacemarks(setIndex,photoIndex,force){if(USE_GOOGLE_MAPS){if(!this.settings.live||force)
this.gmap.renderPhotoPlacemarks(setIndex,photoIndex);}else{}}
function closeGallery(){if(this.gallery)
this.gallery.closeWin();}
var NUM_PATH_LEVELS=6;var TRACKPOINTS_OPTIMIZATION_TRESHOLD=5000;var EMPIRICAL_PARAM_DETAILEDTRACK=100;var GMAP_POLYLINE_THRESHOLD=100;var GMAP_POLYLINE_SEGMENT_LEN=200;var GMAP_CONTROL_MIN_SIZE=400;if(RENDER_TRACKS==undefined){var RENDER_TRACKS=true;}
var PLACE_NAME_URL="/jsmap/cgi-bin/geosearch.cgi";var GMAP_MAX_DEFAULT_ZOOM=14;var PHOTO_PLACEMARK_ICON="gpoint-photo.png";var PHOTO_PLACEMARK_ICON_SELECTED="gpoint-photo-selected.png";var VERY_LARGE_ZINDEX=1000000;var EXTEND_BOUNDS_AMMOUNT=5;function GoogleMap(map){this.initMap=googleInitMap;this.initEmptyMap=googleInitEmptyMap;this.focusPoint=googleFocusPoint;this.unfocusPoint=googleUnfocusPoint;this.focusTrack=googleFocusTrack;this.unfocusTrack=googleUnfocusTrack;this.refocus=googleRefocus;this.pan=googlePan;this.mapCenterTo=googleMapCenterTo;this.setBounds=googleSetBounds;this.encodePoints=googleEncodePoints;this.getPolyline=googleGetPolyline;this.renderTracks=googleRenderTracks;this.toogleDelegator=googleToogleDelegator;this.toogleTracks=googleToogleTracks;this.tooglePhotomarkers=googleTooglePhotomarkers;this.tooglePoints=googleTooglePoints;this.addPhotoPlacemark=googleAddPhotoPlacemark;this.renderPhotoPlacemarks=googleRenderPhotoPlacemarks;this.renderAutoupdatePlacemark=googleRenderAutoupdatePlacemark;this.hidePhotomarkers=googleHidePhotomarkers;this.showPhotomarkers=googleShowPhotomarkers;this.addOverlay=googleAddOverlay;this.removeOverlay=googleRemoveOverlay;this.disableControls=googleDisableControls;this.enableControls=googleEnableControls;this.mapWheel=googleMapWheel;if(!GBrowserIsCompatible())
throw"Incompatible browser";this.map=map;var _this=this;var gmap=new GMap2(document.getElementById(map.divID));if(!map.settings.miniMap){if(!map.settings.hideGoogleControls){if(Math.min(map.w,map.h)>GMAP_CONTROL_MIN_SIZE){this.mapControl=new GLargeMapControl();gmap.addControl(new GScaleControl());}else{this.mapControl=new GSmallMapControl();}
this.galleryViewMapControl=new GSmallMapControl();gmap.addControl(this.mapControl);this.mapControlEnabled=true;gmap.addControl(new GMapTypeControl(),new GControlPosition(G_ANCHOR_TOP_RIGHT,new GSize(9,9)));}
gmap.addMapType(G_PHYSICAL_MAP);gmap.enableDoubleClickZoom();gmap.enableContinuousZoom();var keyHandler=new GKeyboardHandler(gmap);GEvent.addListener(gmap,"zoomend",googleMapZoom);if(map.settings.renderPlaces){GEvent.addListener(gmap,"zoomend",googleRenderPlacenames);GEvent.addListener(gmap,"moveend",googleRenderPlacenames);GEvent.addListener(gmap,"dragend",googleRenderPlacenames);}
if(gmap.enableScrollWheelZoom)
gmap.enableScrollWheelZoom();if(window.addEventListener)
document.getElementById(map.divID).addEventListener('DOMMouseScroll',googleMapWheel,false);var mapDivID=document.getElementById(map.divID);mapDivID.onmousewheel=googleMapWheel;mapDivID.onmouseover=function(){_this.gmap.mouseover=true;};mapDivID.onmouseout=function(){_this.gmap.mouseover=false;};document.onkeypress=googleKeyPressed;}
GEvent.addListener(gmap,"click",googleMapClick);if(map.settings.allowControl!=undefined&&!map.settings.allowControl){gmap.disableDragging();GEvent.addListener(gmap,"movestart",gmap.enableDragging);GEvent.addListener(gmap,"moveend",disableDrag);}
gmap.ttMap=map;this.gmap=gmap;var hasSVGSupport=document.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#SVG","1.1");if(hasSVGSupport&&!SAFARI){}else{GMAP_POLYLINE_SEGMENT_LEN*=10;}
this.iconSize={w:12,h:20};this.shadowSize={w:22,h:20};this.icon=new GIcon();this.icon.image=map.imgRoot+"map/gpoint.png";this.icon.shadow=map.imgRoot+"map/gpoint-shadow.png";this.icon.iconSize=new GSize(this.iconSize.w,this.iconSize.h);this.icon.shadowSize=new GSize(this.shadowSize.w,this.shadowSize.h);this.icon.iconAnchor=new GPoint(this.iconSize.w/2,this.iconSize.h);this.icon.infoWindowAnchor=new GPoint(this.iconSize.w,0);this.locLabels=[];this.allPlaces=[];this.lastZoomLevel=undefined;}
function disableDrag(){var _this=this;window.setTimeout(function(){_this.disableDragging();},500);}
function googleInitEmptyMap(map){var bounds=new GLatLngBounds();var trackBounds={minLat:90,minLon:180,maxLat:-90,maxLon:-180};bounds.extend(new GLatLng(trackBounds.minLat,trackBounds.minLon));bounds.extend(new GLatLng(trackBounds.maxLat,trackBounds.maxLon));this.refocus(bounds);map.mapFireEvent(MAP_EVENT_INIT);}
function googleInitMap(map,overlaysOffset,tracksOffset,track,refocus,galleryChanged){var i,j;var _this=this;var gmap=this.gmap;if(refocus==undefined)refocus=true;if(track.updated)refocus=false;if(tracksOffset==undefined)tracksOffset=0;var drawTrack=!(track.live&&map.settings.live);if(track.showtrack!=undefined)
drawTrack=track.showtrack;if(map.overlays==undefined)
throw"No overlays";var bounds=new GLatLngBounds();var coords=[];for(i=0;i<map.overlays.length;i++){var o=map.overlays[i];var latlng=new GLatLng(o.coord.lat,o.coord.lon);bounds.extend(latlng);coords.push(latlng);}
var lastLat=undefined;var lastLon=undefined;if(map.pathsCoord==undefined)
map.pathsCoord=[];if(drawTrack){var time=getTimeMillis();if(map.pathText!=undefined){var trackBounds={minLat:90,minLon:180,maxLat:-90,maxLon:-180};var hadCoordinate=false;for(i=tracksOffset;i<map.pathText.length;i++){var parsedCoords=parseCoordinates(map.pathText[i]);if(parsedCoords===null||parsedCoords.length===0){log.error("Could not parse coordinates, repairing coordinates list..");map.pathText.splice(i,1);i=i-1;continue;}
if(track.updated&&track.lastPoint!=undefined){parsedCoords=[track.lastPoint].concat(parsedCoords);track.lastPoint=undefined;}
map.pathsCoord.push(parsedCoords);for(j=0;j<map.pathsCoord[map.pathsCoord.length-1].length;j++){var coord=map.pathsCoord[map.pathsCoord.length-1][j];if(coord.lat<trackBounds.minLat)trackBounds.minLat=coord.lat;if(coord.lat>trackBounds.maxLat)trackBounds.maxLat=coord.lat;if(coord.lon<trackBounds.minLon)trackBounds.minLon=coord.lon;if(coord.lon>trackBounds.maxLon)trackBounds.maxLon=coord.lon;hadCoordinate=true;}}
if(coord!=undefined)
track.lastPoint=coord;if(hadCoordinate){var paddingRatio=this.iconSize.h/map.h;var dlat=(trackBounds.maxLat-trackBounds.minLat)*paddingRatio;var dlon=(trackBounds.maxLon-trackBounds.minLon)*paddingRatio;trackBounds.minLat-=dlat;trackBounds.maxLat+=dlat;trackBounds.minLon-=dlon;trackBounds.maxLon+=dlon;if(trackBounds.minLat==trackBounds.maxLat&&trackBounds.minLon==trackBounds.maxLon){trackBounds.minLat-=EXTEND_BOUNDS_AMMOUNT/2;trackBounds.maxLat+=EXTEND_BOUNDS_AMMOUNT/2;trackBounds.minLon-=EXTEND_BOUNDS_AMMOUNT/2;trackBounds.maxLon+=EXTEND_BOUNDS_AMMOUNT/2;}
bounds.extend(new GLatLng(trackBounds.minLat,trackBounds.minLon));bounds.extend(new GLatLng(trackBounds.maxLat,trackBounds.maxLon));}
this.trackBounds=trackBounds;}}else{if(map.pathText&&map.pathText.length>0){coord=parseCoordinates(map.pathText[map.pathText.length-1],true);if(coord!==null){lastLat=coord.lat;lastLon=coord.lon;}}}
track.newLat=lastLat;track.newLon=lastLon;var noOfTrackPoints=0;for(i=0;i<this.map.pathsCoord.length;i++){noOfTrackPoints+=this.map.pathsCoord[i].length;}
if(noOfTrackPoints>TRACKPOINTS_OPTIMIZATION_TRESHOLD){this.optimizetrack=true;}
if(isNaN(this.gmap.getZoom())||(refocus&&!bounds.isEmpty()&&drawTrack)){this.refocus(bounds);}
if(this.overlays==undefined)this.overlays=[];if(gmap.labelCoords==undefined)gmap.labelCoords=[];if(drawTrack){o=undefined;if(map.overlays.length>overlaysOffset){o=map.overlays[overlaysOffset];this.addOverlay(overlaysOffset,coords[overlaysOffset],o.location,o.title,this.icon,o);}
if(map.overlays.length>overlaysOffset+1){var last=map.overlays.length-1;o=map.overlays[last];this.addOverlay(last,coords[last],o.location,o.title,this.icon,o);}
for(i=overlaysOffset+1;i<map.overlays.length-1;i++){o=map.overlays[i];this.addOverlay(i,coords[i],o.location,o.title,this.icon,o);}}
if(!map.settings.miniMap&&!track.live){var fp=map.selectedPoint;map.selectedPoint=-1;map.focusPoint(fp,false);}
track.loaded=true;if(RENDER_TRACKS&&map.pathText!=undefined&&drawTrack){window.setTimeout(function(){_this.renderTracks(map,tracksOffset);},500);}
if(map.settings.slideMap)
map.slideMap(true);if(map.playbackMode){if(!map.playbackStarted)
playbackStart(map);if(galleryChanged)
this.renderPhotoPlacemarks();}else if(map.settings.live){autoUpdate(map,track);if(galleryChanged)
this.renderPhotoPlacemarks();if(track.live)
this.renderAutoupdatePlacemark(track);}
if(!track.updated)
map.mapFireEvent(MAP_EVENT_INIT);}
function googleMapClick(overlay,point){if(point!=undefined){var bounds=this.getBounds();var size=this.getSize();var resolution=(bounds.getNorthEast().lng()-bounds.getSouthWest().lng())*CLICK_RADIUS/size.width;resolution=resolution*EARTH_PERIMETER/360.0;var params={lat:point.lat(),lon:point.lng(),resolution:resolution};this.ttMap.mapFireEvent(MAP_EVENT_CLICK,params);}}
function googleKeyPressed(e){var map=document.map;if(map==undefined||!map.gmap.gmap.mouseover)
return true;var evtobj=(e||window.event);var keyCode=evtobj.charCode?evtobj.charCode:evtobj.keyCode;switch(keyCode){case 72:case 104:if(evtobj.preventDefault)
evtobj.preventDefault();map.gmap.toogleDelegator();break;default:return true;}
return false;}
function googleMapWheel(e){var map=document.map;if(map==undefined){return true;}
e=e||window.event;if(e.preventDefault)
e.preventDefault();map.gmap.wheelEvent=true;return false;}
var wheelZoomEventFlagTimeoutID=undefined;function googleMapZoom(oldLevel,newLevel){if(this.ttMap.gmap.wheelEvent){if(wheelZoomEventFlagTimeoutID!=undefined)
window.clearTimeout(wheelZoomEventFlagTimeoutID);var _this=this;wheelZoomEventFlagTimeoutID=window.setTimeout(function(){_this.ttMap.gmap.wheelEvent=false;wheelZoomEventFlagTimeoutID=undefined;},500);return;}
if(this.ttMap==undefined||this.ttMap.gallery==undefined)
return;var offset=this.ttMap.gallery.centerOffset;if(!this.ttMap.infoBoxShown||offset==undefined)
return;var pan={x:offset.x,y:offset.y};if(this.ttMap.gallery.view==VIEW_PHOTO){pan.x=pan.x*2/3;pan.y=pan.y*2/3;}else if(this.ttMap.gallery.view==VIEW_TEXT){pan.x=pan.x/3;pan.y=pan.y/3;}
if(oldLevel>newLevel){pan.x=-pan.x/2;pan.y=-pan.y/2;}
this.ttMap.animatePan(pan.x,pan.y);}
function googleGetPolyline(encPointsLevels,color){if(color==undefined){color="#"+CANVAS_LINE_COLOR.hex;}
var encodedPolyline=new GPolyline.fromEncoded({color:color,weight:CANVAS_LINE_WIDTH,opacity:CANVAS_OPACITY,points:encPointsLevels.points,levels:encPointsLevels.levels,zoomFactor:encPointsLevels.zoomFactor,numLevels:NUM_PATH_LEVELS});return encodedPolyline;}
function googleRenderTracks(map,i,j,color,polyI){var k;this.encPointsLevels=[];if(i==undefined)
i=0;if(j==undefined)
j=0;if(i>=map.pathsCoord.length)
return;if(polyI==undefined)
polyI=i;if(this.gPolylines==undefined){this.gPolylines=[];}
if(this.gPolylines[polyI]==undefined){this.gPolylines[polyI]=[];}
var maxZoom=map.mapType.getMaximumResolution();if(color==undefined){color="#"+CANVAS_LINE_COLOR.hex;}
var points=[];var start=Math.max(0,j-1);var end=Math.min(map.pathsCoord[i].length,j+GMAP_POLYLINE_SEGMENT_LEN);for(k=start;k<end;k++){points.push(new GLatLng(parseFloat(map.pathsCoord[i][k].lat),parseFloat(map.pathsCoord[i][k].lon)));}
var polyline=undefined;if(j>0||points.length>GMAP_POLYLINE_THRESHOLD){var encPointsLevels=this.encodePoints(points,NUM_PATH_LEVELS,maxZoom);this.encPointsLevels[i]=encPointsLevels;polyline=this.getPolyline(encPointsLevels,color);}else{polyline=new GPolyline(points,color,CANVAS_LINE_WIDTH,CANVAS_OPACITY);}
try{this.gmap.addOverlay(polyline);}catch(e){log.error(e);}
this.gPolylines[polyI][j]=polyline;j+=GMAP_POLYLINE_SEGMENT_LEN;if(j>=map.pathsCoord[i].length){i++;j=0;}
var gmap=this;window.setTimeout(function(){gmap.renderTracks(map,i,j,color,polyI);},50);}
var TOOGLE_SELECTOR=-1;function googleToogleDelegator(){TOOGLE_SELECTOR+=1;switch(TOOGLE_SELECTOR){case 0:this.toogleTracks(true);break;case 1:this.tooglePhotomarkers(true);break;case 2:this.tooglePoints(true);break;default:TOOGLE_SELECTOR=-1;this.toogleTracks(false);this.tooglePhotomarkers(false);this.tooglePoints(false);break;}}
function googleToogleTracks(hide){for(var i=0;i<this.gPolylines.length;i++)
{for(var j=0;j<this.gPolylines[i].length;j+=GMAP_POLYLINE_SEGMENT_LEN)
{if(hide){this.gPolylines[i][j].hide();}else{this.gPolylines[i][j].show();}}}}
function googleTooglePhotomarkers(hide){if(!SHOW_PLACEMARKS||this.visiblePhotoMarkers==undefined||this.visiblePhotoMarkers.length===0){if(hide)
this.toogleDelegator();return;}
for(var i=0;i<this.visiblePhotoMarkers.length;i++){if(hide){this.hidePhotomarkers();}else{this.showPhotomarkers();}}}
function googleHidePhotomarkers(){if(this.visiblePhotoMarkers==undefined)
return;for(var i=0;i<this.visiblePhotoMarkers.length;i++){this.visiblePhotoMarkers[i].placeLabel.hide();this.visiblePhotoMarkers[i].hide();}}
function googleShowPhotomarkers(){if(this.visiblePhotoMarkers==undefined)
return;for(var i=0;i<this.visiblePhotoMarkers.length;i++){this.visiblePhotoMarkers[i].placeLabel.show();this.visiblePhotoMarkers[i].show();}}
function googleTooglePoints(hide){for(var i=0;i<this.overlays.length;i++)
{if(hide){this.overlays[i].gOverlays[0].hide();this.overlays[i].gOverlays[1].hide();}else{this.overlays[i].gOverlays[0].show();this.overlays[i].gOverlays[1].show();}}}
function googleAddPhotoPlacemark(photo,photoOverlays,i,j){if(photo.coord!=undefined){var coord=photo.coord;if(validCoordinates(coord.lat,coord.lon)){var gcoord=new GLatLng(coord.lat,coord.lon);var placemark=new GMarker(new GLatLng(coord.lat,coord.lon),{icon:this.pmarkIcon,clickable:true,zIndexProcess:googleMarkerZIndex});placemark.photoMarker=true;var locationName=photo.location;var placemarkLabel=undefined;if(locationName!==""&&!this.map.settings.live){var id=locationName+"["+j+"]["+i+"]";placemarkLabel=new Label(id,gcoord,locationName,googlePhotoPlacemarkClick,this.map.overlays[i],j);this.gmap.addOverlay(placemarkLabel);}
this.gmap.addOverlay(placemark);placemark.overlay=this.map.overlays[i];placemark.index=j;placemark.placeLabel=placemarkLabel;GEvent.addListener(placemark,"click",googlePhotoPlacemarkClick);photoOverlays[j]=placemark;if(this.map.settings.live)
return;placemark.hide();if(placemark.placeLabel!=undefined)
placemark.placeLabel.hide();}}}
function googleRenderPhotoPlacemarks(setIndex,photoIndex){if(!SHOW_PLACEMARKS||this.map.settings.slideMap){return;}
var map=this.map;if(map==undefined||map.gallery==undefined||map.gallery.sets==undefined)
return;var gallery=map.gallery;if(this.pmarkIcon==undefined){var size={w:12,h:12};this.pmarkIcon=new GIcon();this.pmarkIcon.image=map.imgRoot+"map/"+PHOTO_PLACEMARK_ICON;this.pmarkIcon.iconSize=new GSize(size.w,size.h);this.pmarkIcon.iconAnchor=new GPoint(size.w/2,size.h/2);this.pmarkIcon.infoWindowAnchor=new GPoint(size.w,0);}
if(this.photoOverlays==undefined){this.photoOverlays=[];}
if(gallery.sets.length>this.photoOverlays.length){var i,j;for(i=this.photoOverlays.length;i<gallery.sets.length;i++){this.photoOverlays[i]=[];var photos=gallery.sets[i].photos;for(j=0;j<photos.length;j++){this.addPhotoPlacemark(photos[j],this.photoOverlays[i],i,j);}}}
else if(gallery.sets.length>0&&this.photoOverlays.length>0){for(i=0;i<gallery.sets.length;i++){photos=gallery.sets[i].photos;if(photos.length>this.photoOverlays[i].length){for(j=this.photoOverlays[i].length;j<photos.length;j++){this.addPhotoPlacemark(photos[j],this.photoOverlays[i],i,j);}}}}
var icon=map.imgRoot+"map/"+PHOTO_PLACEMARK_ICON;var iconSelected=map.imgRoot+"map/"+PHOTO_PLACEMARK_ICON_SELECTED;this.visiblePhotoMarkers=[];for(i=0;i<gallery.sets.length;i++){photos=gallery.sets[i].photos;for(j=0;j<photos.length;j++){if(this.photoOverlays[i][j]==undefined){continue;}
if(i==setIndex){this.photoOverlays[i][j].show();if(this.photoOverlays[i][j].placeLabel!=undefined){this.photoOverlays[i][j].placeLabel.show();}
this.visiblePhotoMarkers.push(this.photoOverlays[i][j]);if(j==photoIndex){this.gmap.removeOverlay(this.photoOverlays[i][j]);this.gmap.addOverlay(this.photoOverlays[i][j]);this.photoOverlays[i][j].setImage(iconSelected);}else{this.photoOverlays[i][j].setImage(icon);}}else{if(this.photoOverlays[i][j].placeLabel!=undefined)
this.photoOverlays[i][j].placeLabel.hide();this.photoOverlays[i][j].hide();this.photoOverlays[i][j].setImage(icon);}}}}
function googleRenderAutoupdatePlacemark(track){if(track.newLat==undefined||track.newLon==undefined||isNaN(track.newLat)||isNaN(track.newLon))
return;if(track.liveIcon==undefined){track.liveIcon=new GIcon();track.liveIcon.image=track.liveIconURL;track.liveIcon.iconSize=new GSize(track.liveIconDim.w,track.liveIconDim.h);track.liveIcon.iconAnchor=new GPoint(track.liveIconDim.w/2,track.liveIconDim.h/2);track.liveIcon.infoWindowAnchor=new GPoint(track.liveIconDim.w,0);}
if(track.autoUpdatePlacemark==undefined){track.autoUpdatePlacemark=new GMarker(new GLatLng(track.newLat,track.newLon),{icon:track.liveIcon,clickable:false,zIndexProcess:googleMarkerZIndex});this.gmap.addOverlay(track.autoUpdatePlacemark);}else{track.autoUpdatePlacemark.setPoint(new GLatLng(track.newLat,track.newLon));}}
var googleMarkerGlobalZIndex=0;function googleMarkerZIndex(marker,b){if(marker.photoMarker){googleMarkerGlobalZIndex=googleMarkerGlobalZIndex+1;return googleMarkerGlobalZIndex;}else{return VERY_LARGE_ZINDEX;}}
var locIcon=undefined;var inProgress=false;function googleRenderPlacenames(req,gmap){if(inProgress&&req==undefined&&gmap==undefined){return;}
if(gmap==undefined||!(gmap instanceof GMap2)){gmap=this;}
var i,j,bounds;if(locIcon==undefined){locIcon=new GIcon();locIcon.image=gmap.ttMap.imgRoot+"map/gpoint-placename.png";locIcon.iconSize=new GSize(12,12);locIcon.iconAnchor=new GPoint(6,6);locIcon.infoWindowAnchor=new GPoint(5,1);}
if(req==undefined){var max=parseInt(gmap.getSize().width*gmap.getSize().height/75/75);bounds=gmap.getBounds();var lat1=bounds.getSouthWest().lat();var lon1=bounds.getSouthWest().lng();var lat2=bounds.getNorthEast().lat();var lon2=bounds.getNorthEast().lng();lat1=Math.max(-90,Math.min(90,lat1));lat2=Math.max(-90,Math.min(90,lat2));lon1=Math.max(-180,Math.min(180,lon1));lon2=Math.max(-180,Math.min(180,lon2));var url=PLACE_NAME_URL+
(PLACE_NAME_URL.search(/\?/)==-1?'?':'&')+"max="+max+"&bounds="+lat1+","+lon1+","+lat2+","+lon2;try{getResponse(url,true,false,googleRenderPlacenames,gmap);inProgress=true;}catch(e){}
return;}else if(req.readyState!=4){return;}
var locations=req.responseText;inProgress=false;var forceRemove=false;var lastZoomLevel=gmap.ttMap.gmap.lastZoomLevel;if(lastZoomLevel!=undefined&&gmap.getZoom()!=lastZoomLevel){forceRemove=true;}
bounds=gmap.getBounds();var locLabels=gmap.ttMap.gmap.locLabels;var allPlaces=gmap.ttMap.gmap.allPlaces;for(i=locLabels.length-1;i>=0;i--){if(forceRemove||!bounds.contains(locLabels[i].marker.getPoint())){gmap.removeOverlay(locLabels[i].label);gmap.removeOverlay(locLabels[i].marker);googleRemovePlaceName(allPlaces,locLabels[i].id);locLabels.splice(i,1);}}
if(forceRemove){allPlaces=[];}else{for(i=allPlaces.length-1;i>=0;i--){if(!bounds.contains(allPlaces[i].coord)){allPlaces.splice(i,1);}}}
locations=locations.split("\n");for(i=0;i<locations.length;i++){if(locations[i].length===0)
continue;var location=locations[i].split("\t");if(location.length<9)
continue;var name=location[1];var lat=parseFloat(location[2]);var lon=parseFloat(location[3]);var country=location[7];var state=location[8];var population=location[9];var coord=new GLatLng(lat,lon);if(!bounds.contains(coord)){continue;}
var pos=gmap.fromLatLngToDivPixel(coord);var show=true;for(j=0;j<locLabels.length;j++){var mpos=locLabels[j].label.pos_;if(locLabels[j].marker.getPoint().equals(coord)){show=false;break;}else if(mpos!=undefined&&Math.abs(mpos.y-pos.y)<30&&Math.abs(mpos.x-pos.x)<100){show=false;break;}}
var id=name+";"+lat+";"+lon;googleAddPlaceName(allPlaces,{id:"Overlay"+id,caption:name,country:country,state:state,population:population,coord:coord,lat:lat,lon:lon});if(show){var locLabel=new Label(id,coord,name,googlePlaceNameClick);var locMarker=new GMarker(coord,{icon:locIcon,clickable:true,title:name,zIndexProcess:googleMarkerZIndex});locMarker.divID="Overlay"+id;GEvent.addListener(locMarker,"click",googlePlaceNameClick);gmap.addOverlay(locMarker);gmap.addOverlay(locLabel);locLabels.push({label:locLabel,marker:locMarker,id:"Overlay"+id});}}
var _marker;for(i=0;i<gmap.ttMap.gmap.overlays.length;i++){if(gmap.ttMap.gmap.overlays[i].setlocationselectable){_marker=gmap.ttMap.gmap.overlays[i].gOverlays[0];if(bounds.contains(_marker.getPoint())){googleAddPlaceName(allPlaces,_marker.placeObject);}}}
gmap.ttMap.gmap.locLabels=locLabels;gmap.ttMap.gmap.lastZoomLevel=gmap.getZoom();gmap.ttMap.gmap.allPlaces=allPlaces;var params={places:allPlaces};gmap.ttMap.mapFireEvent(MAP_EVENT_CHANGE_PLACES,params);}
function googleAddPlaceName(allPlaces,place){var i;for(i=0;i<allPlaces.length;i++){if(allPlaces[i].id==place.id){return;}}
allPlaces.push(place);}
function googleRemovePlaceName(allPlaces,id){var i;for(i=allPlaces.length-1;i>=0;i--){if(allPlaces[i].id==id){allPlaces.splice(i,1);return;}}}
function googlePlaceNameClick(event){var map=document.map;if(map==undefined){return true;}
var id;if(this.placeObject!=undefined)
id=this.placeObject.divID;else
id=this.divID;if(id==undefined){event=getEvent(event);if(event.type!="click")
return true;var tgt=getEventTarget(event);if(tgt==undefined)
return true;id=tgt.divID;}
var params={id:id};map.mapFireEvent(MAP_EVENT_CLICK_PLACE,params);return false;}
function googlePhotoPlacemarkClick(event){var map=document.map;if(map==undefined)
return true;overlayTarget=this.overlay;var index=this.index;if(overlayTarget==undefined){event=getEvent(event);if(event.type!="click")
return true;var tgt=getEventTarget(event);if(tgt==undefined)
return true;overlayTarget=tgt.placeObject;index=tgt.photoIndex;}
map.showInfoBox(overlayTarget.divId,index);return false;}
function googleFocusPoint(index,photoIndex,doCenter,centerOffset){var o=this.map.overlays[index];var marker=this.overlays[index].gOverlays[0];this.gmap.removeOverlay(marker);this.gmap.addOverlay(marker);marker.setImage(this.map.imgRoot+"map/gpoint-selected.png");marker.show();if(!this.map.settings.live)
this.renderPhotoPlacemarks(index,photoIndex);if(doCenter){var p=undefined;if(photoIndex!=undefined&&this.map.gallery!=undefined){p=this.map.gallery.sets[index].photos[photoIndex].coord;}
if(p==undefined){p={lat:o.coord.lat,lon:o.coord.lon};}
p=this.gmap.fromLatLngToDivPixel(new GLatLng(p.lat,p.lon));p.x+=centerOffset.x;p.y+=centerOffset.y;var c=this.gmap.fromDivPixelToLatLng(p);this.gmap.panTo(c);}}
function googleUnfocusPoint(index){this.overlays[index].gOverlays[0].setImage(this.map.imgRoot+"map/gpoint.png");}
function googleFocusTrack(index){if(this.gPolylines==undefined){return;}
this.unfocusTrack();if(index!=undefined&&index>=0){var polyI=(this.gPolylines.length+index);this.renderTracks(this.gmap.ttMap,index,0,"#ff0000",polyI);this.gmap.ttMap.focusedTrack=polyI;}}
function googleUnfocusTrack(){var i=this.gmap.ttMap.focusedTrack;if(i!=undefined&&i>=0){if(this.gPolylines!=undefined&&this.gPolylines[i]!=undefined){var j;for(j=0;j<this.gPolylines[i].length;j++){this.gmap.removeOverlay(this.gPolylines[i][j]);}}}
this.gmap.ttMap.focusedTrack=undefined;}
function googleRefocus(bounds){if(bounds==undefined){bounds=new GLatLngBounds();for(var i=0;i<this.map.overlays.length;i++){var o=this.map.overlays[i];var latlng=new GLatLng(o.coord.lat,o.coord.lon);bounds.extend(latlng);}
if(this.trackBounds!=undefined){bounds.extend(new GLatLng(this.trackBounds.minLat,this.trackBounds.minLon));bounds.extend(new GLatLng(this.trackBounds.maxLat,this.trackBounds.maxLon));}}
var zoomLevel=this.gmap.getBoundsZoomLevel(bounds);if(this.map.settings.slideMap){zoomLevel+=2;}
zoomLevel=Math.min(GMAP_MAX_DEFAULT_ZOOM,zoomLevel);this.gmap.setCenter(bounds.getCenter(),zoomLevel,this.map.mapType);}
function googlePan(x,y){this.gmap.panBy(new GSize(x,y));}
function googleMapCenterTo(coord){this.gmap.panTo(new GLatLng(coord.lat,coord.lon));}
function googleSetBounds(coords){var i,bounds={minLat:90,minLon:180,maxLat:-90,maxLon:-180};for(i=0;i<coords.length;i++){if(coords[i].lat<bounds.minLat)bounds.minLat=coords[i].lat;if(coords[i].lat>bounds.maxLat)bounds.maxLat=coords[i].lat;if(coords[i].lon<bounds.minLon)bounds.minLon=coords[i].lon;if(coords[i].lon>bounds.maxLon)bounds.maxLon=coords[i].lon;}
var dlat=(bounds.maxLat-bounds.minLat)*0.02;var dlon=(bounds.maxLon-bounds.minLon)*0.02;bounds.minLat-=dlat;bounds.maxLat+=dlat;bounds.minLon-=dlon;bounds.maxLon+=dlon;var gbounds=new GLatLngBounds();gbounds.extend(new GLatLng(bounds.minLat,bounds.minLon));gbounds.extend(new GLatLng(bounds.maxLat,bounds.maxLon));this.gmap.setCenter(gbounds.getCenter(),this.gmap.getBoundsZoomLevel(gbounds),this.map.mapType);}
function googleAddOverlay(index,coord,location,title,icon,overlay,setlocationselectable){if(!(icon instanceof GIcon)){var url=icon;if(url.indexOf("/")!=-1){url=url.substring(url.lastIndexOf("/")+1);}
icon=new GIcon();icon.image=this.gmap.ttMap.imgRoot+"map/g"+url;icon.shadow=this.gmap.ttMap.imgRoot+"map/gpoint-shadow.png";icon.iconSize=new GSize(12,20);icon.shadowSize=new GSize(22,20);icon.iconAnchor=new GPoint(6,20);icon.infoWindowAnchor=new GPoint(5,1);}
var markerTitle=location+": "+title;var clickable=this.gmap.ttMap.settings.miniMap==undefined||!this.gmap.ttMap.settings.miniMap;var marker=new GMarker(coord,{icon:icon,clickable:clickable,title:markerTitle,zIndexProcess:googleMarkerZIndex});marker.overlay=overlay;marker.gmap=this.gmap;var markerLabel;if(clickable&&overlay!=undefined){var func=function(){overlayTarget=this.overlay;this.gmap.ttMap.showInfoBox(overlayTarget.divId);};GEvent.addListener(marker,"click",func);if(overlay!=undefined&&overlay.setlocationselectable){GEvent.addListener(marker,"click",googlePlaceNameClick);var placeObject=new Object();placeObject.id="Overlay"+location+";"+overlay.coord.lat+";"+overlay.coord.lon;placeObject.divID=placeObject.id;placeObject.lon=overlay.coord.lon;placeObject.lat=overlay.coord.lat;placeObject.coord=new GLatLng(placeObject.lat,placeObject.lon);placeObject.caption=title;placeObject.country=overlay.country;placeObject.state=overlay.state;marker.placeObject=placeObject;if(this.map.settings.showGallery!=undefined&&!this.map.settings.showGallery)
markerLabel=new Label(index,coord,location,googlePlaceNameClick,placeObject);}}
if(markerLabel==undefined){markerLabel=new Label(index,coord,location);}
this.gmap.addOverlay(marker);this.gmap.addOverlay(markerLabel);if(this.gmap.labelCoords==undefined)
this.gmap.labelCoords=[];this.gmap.labelCoords[index]=coord;var o=new Object();o.id=(overlay!=undefined?overlay.id:"Overlay"+index);o.setlocationselectable=(overlay!=undefined&&overlay.setlocationselectable);o.gOverlays=[];o.gOverlays.push(marker);o.gOverlays.push(markerLabel);if(this.overlays==undefined)
this.overlays=[];this.overlays[index]=o;return o.id;}
function googleRemoveOverlay(id){var i,j;for(i=this.overlays.length-1;i>=0;i--){if(this.overlays[i].id==id){var o=this.overlays[i];for(j=0;j<o.gOverlays.length;j++){this.gmap.removeOverlay(o.gOverlays[j]);}
this.overlays.splice(i,1);this.gmap.ttMap.overlays.splice(i,1);this.gmap.labelCoords.splice(i,1);}}}
function googleDisableControls(){if(this.mapControlEnabled){this.gmap.removeControl(this.mapControl);this.gmap.disableDoubleClickZoom();this.mapControlEnabled=false;}}
function googleEnableControls(){if(!this.mapControlEnabled){this.gmap.addControl(this.mapControl);this.gmap.enableDoubleClickZoom();this.mapControlEnabled=true;}}
function pointDist2(p1,p2){var dlat=p1.lat()-p2.lat();var dlon=p1.lng()-p2.lng();return(dlat*dlat)+(dlon*dlon);}
function googleEncodePoints(points,numLevels,maxZoom){var i,j;var plat=0;var plon=0;var encPoints=[];var encLevels=[];var levelPoints=[];for(i=0;i<numLevels;i++){levelPoints[i]=undefined;}
var minDist2=[];for(i=0;i<numLevels;i++){var power2=Math.pow(2,parseInt(i*maxZoom/(numLevels-1)));minDist2[i]=360.0/(EARTH_PERIMETER/GMAP_RESOLUTION)*power2;minDist2[i]*=minDist2[i];if(i>0&&this.optimizetrack&&!this.gmap.ttMap.settings.miniMap)
minDist2[i]*=EMPIRICAL_PARAM_DETAILEDTRACK;}
for(i=0;i<points.length;i++){var lat=Math.floor(points[i].lat()*1e5);var lon=Math.floor(points[i].lng()*1e5);var level=-1;if(i>0&&i<points.length-1){for(j=numLevels-1;j>=0;j--){if(levelPoints[j]==undefined||pointDist2(levelPoints[j],points[i])>minDist2[j]){level=j;for(;j>=0;j--){levelPoints[j]=points[i];}
break;}}}else{level=numLevels-1;for(j=numLevels-1;j>=0;j--){levelPoints[j]=points[i];}}
if(level<0){continue;}
encPoints.push(encodeSignedNumber(lat-plat)+encodeSignedNumber(lon-plon));encLevels.push(encodeNumber(level));plat=lat;plon=lon;}
var strEncPoints=encPoints.join("");var strEncLevels=encLevels.join("");var zoomFactor=Math.pow(2,Math.ceil(maxZoom/NUM_PATH_LEVELS)-1);return{points:strEncPoints,levels:strEncLevels,zoomFactor:zoomFactor};}
function encodeSignedNumber(num){var sgn_num=(num<<1);if(num<0)
sgn_num=~(sgn_num);return(encodeNumber(sgn_num));}
function encodeNumber(num){var encodeString="";while(num>=0x20){encodeString+=(String.fromCharCode((0x20|(num&0x1f))+63));num>>=5;}
encodeString+=(String.fromCharCode(num+63));return encodeString;}
function Label(index,coord,text,onclick,placeObject,photoIndex){this.index_=index;this.coord_=coord;this.text_=(text||"");this.onclick_=onclick;this.placeObject_=placeObject;this.photoIndex_=photoIndex;}
function FakeGOverlay(){}
if(USE_GOOGLE_MAPS){Label.prototype=new GOverlay();}else{Label.prototype=new FakeGOverlay();}
Label.prototype.initialize=function(map){var div=document.createElement("div");div.style.visibility="hidden";div.style.position="absolute";div.className=(map.ttMap.settings.miniMap?"LocationMini":"Location")+" "+
(map.ttMap.settings.miniMap?"LocationShadowMini":"LocationShadow");div.draggable=true;div.appendChild(document.createTextNode(this.text_));var divUp=document.createElement("div");divUp.style.position="absolute";divUp.style.top="0px";divUp.style.left="0px";divUp.className=(map.ttMap.settings.miniMap?"LocationMini":"Location");divUp.appendChild(document.createTextNode(this.text_));divUp.draggable=true;if(map.ttMap.settings.overlayOpacity>0&&this.onclick_==undefined)
div.style.opacity=map.ttMap.settings.overlayOpacity;if(this.onclick_!=undefined){divUp.divID="Overlay"+this.index_;divUp.placeObject=this.placeObject_;divUp.onclick=this.onclick_;divUp.style.cursor="pointer";divUp.className+=" LocationHover";}else if(!map.ttMap.settings.miniMap&&(map.ttMap.settings==undefined||map.ttMap.settings.showGallery==undefined||map.ttMap.settings.showGallery)){divUp.divID="Overlay"+this.index_;divUp.onclick=overlayClick;divUp.style.cursor="pointer";divUp.className+=" LocationHover";}
if(this.photoIndex_!=undefined){divUp.photoIndex=this.photoIndex_;}else{divUp.photoIndex=0;}
div.appendChild(divUp);if(this.index_>=0)
map.ttMap.overlays[this.index_].locDiv=div;map.getPane(G_MAP_FLOAT_PANE).appendChild(div);this.map_=map;this.div_=div;};Label.prototype.hide=function(){this.hidden=true;this.div_.style.visibility="hidden";};Label.prototype.show=function(){this.hidden=false;this.redraw(true);};Label.prototype.remove=function(){this.div_.parentNode.removeChild(this.div_);};Label.prototype.copy=function(){return new Label(this.index_,this.coord_,this.text_);};Label.prototype.redraw=function(force){if(!force||this.hidden)return;var i;var showLabel=true;var p=this.map_.fromLatLngToDivPixel(this.coord_);this.pos_=p;var x=p.x+10;var y=p.y-LOC_FONT_SIZE-10;p.w=(this.text_!=undefined?LOC_FONT_SIZE*2/3*this.text_.length:0);var h=LOC_FONT_SIZE*2;var p1={x:p.x,y:p.y,w:p.w,h:h};for(i=0;i<this.map_.ttMap.overlays.length;i++){if(i==this.index_){continue;}
var p2=this.map_.ttMap.overlays[i].locPos;if(p2==undefined)
continue;if(!this.compareLabelPositions(p1,p2,h)){showLabel=false;break;}}
var visiblePhotoLabelIndex=-1;if(this.photoIndex_!=undefined&&showLabel&&this.map_.ttMap.gmap.visiblePhotoMarkers!=undefined){var visiblePhotoMarkers=this.map_.ttMap.gmap.visiblePhotoMarkers;for(i=0;i<visiblePhotoMarkers.length;i++){if(visiblePhotoMarkers[i].placeLabel==undefined)
continue;if(visiblePhotoMarkers[i].placeLabel.index_==this.index_){continue;}
p2=visiblePhotoMarkers[i].placeLabel.locPos;if(p2==undefined)
continue;if(!this.compareLabelPositions(p1,p2,h)){showLabel=false;break;}}}
this.div_.style.left=x+"px";this.div_.style.top=y+"px";if(showLabel){this.div_.style.visibility="visible";if(this.index_>=0)
this.map_.ttMap.overlays[this.index_].locPos=p1;else if(this.photoIndex_>=0){this.locPos=p1;}}else{this.div_.style.visibility="hidden";if(this.index_>=0)
this.map_.ttMap.overlays[this.index_].locPos=undefined;else if(this.photoIndex>=0){this.locPos=undefined;}}};Label.prototype.compareLabelPositions=function(p1,p2,h){if(Math.abs(p2.y-p1.y)<h){if((p1.x>=p2.x&&p1.x<=p2.x+p2.w)||(p1.x+p1.w>=p2.x&&p1.x+p1.w<=p2.x+p2.w)||(p2.x>=p1.x&&p2.x<=p1.x+p1.w)||(p2.x+p2.w>=p1.x&&p2.x+p2.w<=p1.x+p1.w)){return false;}}
return true;};var galleryInitialized=false;var BLANK_IMG_SRC="gallery/blank.png";var MAX_WEB_WIDTH=400;var MAX_WEB_HEIGHT=300;var SET_SIDEBARSCROLLABLE_H=366;var MAX_SET_TITLE_LENGTH=40;var VIEW_FULL=0;var VIEW_PHOTO=1;var VIEW_TEXT=2;var NO_PHOTO_ID="triptracker_no_photo_id";function Gallery(divID,photosURL){this.parsePhotos=parsePhotos;this.incrementalAddPhotos=incrementalAddPhotos;this.renderPhotos=renderPhotos;this.movePhotos=movePhotos;this.selectPhoto=selectPhoto;this.getSelectedPhoto=getSelectedPhoto;this.moveSets=moveSets;this.selectSet=selectSet;this.firstPhoto=galleryFirstPhoto;this.lastPhoto=galleryLastPhoto;this.setLoading=setWebPhotoLoading;this.updateParentSelection=updateParentSelection;this.showViewer=showViewer;this.updateWebPhoto=updateWebPhoto;this.updateThumb=updateThumb;this.focusEvent=focusEvent;this.closeWin=closeWin;this.showView=showView;this.showFullView=showFullView;this.showPhotoView=showPhotoView;this.showTextView=showTextView;this.getMap=getMap;this.initViewerPhotos=initViewerPhotos;if(galleryInitialized==undefined||!galleryInitialized)
galleryInit();document.gallery=this;if(divID!=undefined){document.onkeydown=handleGalleryEvent;document.onkeypress=handleGalleryEvent;this.win=window;this.win.focus();}
this.sets=[];this.setIndex=0;this.photoIndex=0;this.activeBuffer=0;this.numPhotos=0;this.view=VIEW_FULL;this.parsePhotos(photosURL);if(divID!=undefined){var rootWin=getRootWindow();var viewer=new PhotoViewer(rootWin);viewer.enableToolbarAnimator();viewer.setCloseCallback(viewerCloseCallback);this.viewer=viewer;this.initViewerPhotos();}
var map=this.getMap();this.imgRoot="/jsmap/images/";if(typeof map!='undefined'&&map!==null){if(typeof map.imgRoot!='undefined')
this.imgRoot=map.imgRoot;map.gallery=this;if(map.settings.gearthLink!=undefined){var gearthLink=document.getElementById("GEarthLink");var gearthDiv=document.getElementById("GEarthLinkDiv");gearthLink.href=map.settings.gearthLink;gearthDiv.style.visibility="visible";}
var setNav=document.getElementById("SetNav");if(setNav!=undefined){if(map.settings.showGalleryNavigation){var setDesc=document.getElementById("SidebarScrollable");setDesc.style.height=SET_SIDEBARSCROLLABLE_H+"px";setNav.style.display="block";}else{setNav.style.display="none";}}
map.renderPhotoPlacemarks(-1,-1,true);}
try{map.galleryCreated=true;if(map.openGalleryWhenLoaded){if(map.deferredGalleryLoad_TripEntry!=undefined&&map.deferredGalleryLoad_TripEntry>map.overlays.length-1){map.deferredGalleryLoad_TripEntry=0;}
map.openGallery(map.deferredGalleryLoad_TripEntry);}}
catch(e){}}
function Set(){this.title="";this.location="";this.time=undefined;this.desc="";this.photos=[];}
function Photo(){this.index=-1;this.id=undefined;this.title="";this.time=undefined;this.desc="";this.orig=undefined;this.web=undefined;this.thumb=undefined;this.coord=undefined;}
function galleryInit(){try{if(galleryInitialized)
return;galleryInitialized=true;}catch(e){log.error("init",e);throw e;}}
function initViewerPhotos(){var i,j;for(i=0;i<this.sets.length;i++){for(j=0;j<this.sets[i].photos.length;j++){var p=this.sets[i].photos[j];if(p!=undefined&&p.orig!=undefined&&p.orig.src!=undefined){var pimg=new PhotoImg(p.id,p.orig.src,p.orig.width,p.orig.height,formatDateTime(p.time),p.title);this.viewer.add(pimg);}}}}
function parsePhotos(url){var i,j;var overlays;if(url!=undefined){var response=getResponse(url,false,true);if(response==undefined)
return;overlays=getElementsByTagName(response,"feed");}else{var map=getMap();if(map!=undefined){overlays=map.overlaysXML;}}
if(overlays&&typeof overlays.length=='number'){for(i=0;i<overlays.length;i++){var entries=getElementsByTagName(overlays[i],"entry");for(j=0;j<entries.length;j++){var coord=getFirstElementsValue(entries[j],"gml:pos");if(typeof coord!='undefined'&&coord.length>0){var set=parseSet(entries[j]);if(set!=undefined)
this.sets.push(set);}}}}}
function incrementalAddPhotos(entryElements){var i,j,k;var galleryChanged=false;if(entryElements==undefined||typeof entryElements.length!='number'||entryElements.length===0)
return false;var prevSetsLength=this.sets.length;for(j=0;j<entryElements.length;j++){var triptrackerId=getFirstElementsValue(entryElements[j],"id");var existingEntry=false;for(i=0;i<this.sets.length;i++){if(this.sets[i].triptrackerId==triptrackerId){addPhotosToSet(this.sets[i],entryElements[j]);galleryChanged=true;existingEntry=true;continue;}}
if(existingEntry){var index=0;for(i=0;i<this.sets.length;i++){for(k=0;k<this.sets[i].photos.length;k++)
this.sets[i].photos[k].index=index++;}
if(index!=this.numPhotos){log.error("Photo indexes and number of photos do not match.");}}
if(!existingEntry){var coord=getFirstElementsValue(entryElements[j],"gml:pos");if(coord!=undefined&&coord.length>0){var set=parseSet(entryElements[j]);if(set!=undefined){this.sets.push(set);galleryChanged=true;}}}}
if(!galleryChanged){return false;}
this.viewer.photos=[];this.initViewerPhotos();return true;}
function parseSet(node){var i,j,k;var set=new Set();set.triptrackerId=getFirstElementsValue(node,"id");set.title=getFirstElementsValue(node,"title");set.location=undefined;var pos=set.title.lastIndexOf(" @ ");if(pos!=-1){set.location=set.title.substring(pos+3);set.title=set.title.substring(0,pos);}
if(set.title.length>MAX_SET_TITLE_LENGTH){set.title=trimToLen(set.title,MAX_SET_TITLE_LENGTH);}
if(set.location.length>MAX_SET_TITLE_LENGTH){set.location=trimToLen(set.location,MAX_SET_TITLE_LENGTH);}
set.time=parseISOTime(getFirstElementsValue(node,"updated"));var coord=undefined;var ctokens=getFirstElementsValue(node,"dc:coverage");if(ctokens!=undefined){ctokens=ctokens.split(/\s+/);coord={lat:parseFloat(ctokens[0]),lon:parseFloat(ctokens[1])};if(!validCoordinates(coord.lat,coord.lon))
return undefined;}
set.desc=getFirstElementsValue(node,"content");addPhotosToSet(set,node);return set;}
function addPhotosToSet(set,node){var i,j,coord,pos;var gallery=getGallery();if(set.photos==undefined)
set.photos=[];var photos=getElementsByTagName(node,"media:group");if(photos.length===0&&set.photos.length===0){var noPhoto=new Photo();noPhoto.id=NO_PHOTO_ID;noPhoto.text=getMessage("gallery.nophotos");noPhoto.index=gallery.numPhotos;gallery.numPhotos+=1;set.photos.push(noPhoto);}else if(photos.length>0){for(i=set.photos.length-1;i>=0;i--){if(set.photos[i].id==NO_PHOTO_ID){set.photos.splice(i,1);gallery.numPhotos-=1;}}}
for(i=0;i<photos.length;i++){var photoId=getFirstElementsValue(photos[i],"dc:identifier");var photoAlreadyExists=false;for(j=0;j<set.photos.length;j++){if(photoId==set.photos[j].id){photoAlreadyExists=true;break;}}
if(photoAlreadyExists)
continue;var photo=new Photo();photo.id=photoId;photo.time=parseISOTime(getFirstElementsValue(photos[i],"dc:date"));coord=getFirstElementsValue(photos[i],"dc:coverage");if(coord!=undefined&&coord.length>0){coord=coord.split(/\s+/);photo.coord={lat:parseFloat(coord[0]),lon:parseFloat(coord[1])};}
var title=getFirstElementsValue(photos[i],"media:title");var location="";if(title!=undefined){pos=title.lastIndexOf(" @ ");if(pos!=-1){location=title.substring(pos+3);var pos2=location.indexOf(",");if(pos2!=-1){location=location.substring(0,pos2);}
title=title.substring(0,pos);}}
if(location===""&&photo.coord!=undefined)
location="lon: "+photo.coord.lon+" lat: "+photo.coord.lat;photo.title=title;photo.title=trimToLen(photo.title,TITLE_MAX_LENGTH);photo.location=location;var images=getElementsByTagName(photos[i],"media:content");for(j=0;j<images.length;j++){var src,w,h;src=images[j].getAttribute("url");w=images[j].getAttribute("width");h=images[j].getAttribute("height");var img={src:src,width:w,height:h};if(j===0)
photo.thumb=img;else if(j===1)
photo.web=img;else if(j===2)
photo.orig=img;}
photo.index=gallery.numPhotos;gallery.numPhotos+=1;set.photos.push(photo);}}
var preloadThumbPhotos=[];var lastSetIndex=0;function renderPhotos(updateParent,focusOnTrackPoint){var i,j;var setIndex,photoIndex;if(this.sets.length===0||this.setIndex<0||this.setIndex>=this.sets.length)
return;var set=this.sets[this.setIndex];var elt=document.getElementById("SetTitle");elt.firstChild.nodeValue=(this.setIndex+1)+". "+set.title;elt=document.getElementById("SetLocation");if(set.location.length>0)
elt.firstChild.nodeValue=set.location;else
elt.firstChild.nodeValue="";elt=document.getElementById("SetTime");if(set.time!=undefined)
elt.firstChild.nodeValue=formatDateTime(set.time);else
elt.firstChild.nodeValue="";elt=document.getElementById("SetTitlePrev");if(elt!=undefined){if(this.setIndex>0){elt.firstChild.nodeValue=(this.setIndex)+". "+this.sets[this.setIndex-1].title;elt.style.cursor="pointer";}else{elt.firstChild.nodeValue="";elt.style.cursor="default";}}
elt=document.getElementById("SetTitleNext");if(elt!=undefined){if(this.setIndex<this.sets.length-1){elt.firstChild.nodeValue=(this.setIndex+2)+". "+this.sets[this.setIndex+1].title;elt.style.cursor="pointer";}else{elt.firstChild.nodeValue="";elt.style.cursor="default";}}
elt=document.getElementById("SetDesc");elt.innerHTML=set.desc;var arrA=document.getElementById("SidebarScrollable").getElementsByTagName('a');for(i=0;i<arrA.length;i++)
arrA[i].target="_blank";if(lastSetIndex!=this.setIndex){document.getElementById("SidebarScrollable").scrollTop=0;lastSetIndex=this.setIndex;}
elt=document.getElementById("SetNavIndex");if(elt!=undefined){elt.firstChild.nodeValue=(this.setIndex+1)+" / "+this.sets.length;}
elt=document.getElementById("Thumbs");var thumbs=[];for(i=0;i<elt.childNodes.length;i++){if(elt.childNodes[i].nodeName.toLowerCase()=="a"){thumbs.push(elt.childNodes[i]);}}
for(i=0;i<thumbs.length;i++){thumbs[i].src=this.imgRoot+BLANK_IMG_SRC;}
for(i=0;i<thumbs.length;i++){var img=thumbs[i].firstChild;var offset=i-parseInt(thumbs.length/2);var index=offset+this.photoIndex;var skip;if(index>=0&&index<set.photos.length){this.updateThumb(img,set.photos[index],true,offset,"");}else if(index>=set.photos.length&&this.setIndex<this.sets.length-1){skip=index-set.photos.length+1;setIndex=this.setIndex+1;photoIndex=0;while(skip>1){photoIndex++;if(photoIndex==this.sets[setIndex].photos.length){setIndex++;if(setIndex==this.sets.length){setIndex=-1;break;}
photoIndex=0;}
skip--;}
if(setIndex>=0){this.updateThumb(img,this.sets[setIndex].photos[photoIndex],true,offset,"Skip");}else if(photoIndex==1){var endMarker=new Photo();endMarker.text=getMessage("gallery.thumbs.end");this.updateThumb(img,endMarker,false,offset,"None");}else{this.updateThumb(img,undefined,false,offset,"None");}}else if(index<0&&this.setIndex>0){skip=-index;setIndex=this.setIndex-1;photoIndex=this.sets[setIndex].photos.length-1;while(skip>1){photoIndex--;if(photoIndex==-1){setIndex--;if(setIndex==-1)
break;photoIndex=this.sets[setIndex].photos.length-1;}
skip--;}
if(setIndex>=0)
this.updateThumb(img,this.sets[setIndex].photos[photoIndex],true,offset,"Skip");else
this.updateThumb(img,undefined,false,offset,"None");}else{if(index==-1&&this.setIndex===0){var startMarker=new Photo();startMarker.text=getMessage("gallery.thumbs.start");this.updateThumb(img,startMarker,false,offset,"None");}else if(index==1&&this.setIndex==this.sets.length-1){var endMarker2=new Photo();endMarker2.text=getMessage("gallery.thumbs.end");this.updateThumb(img,endMarker2,false,offset,"None");}else{this.updateThumb(img,undefined,false,offset,"None");}}}
var preloadOffset=0;setIndex=this.setIndex;photoIndex=this.photoIndex+parseInt(thumbs.length/2)+1;for(i=0;i<parseInt(thumbs.length/2);i++){if(photoIndex>=this.sets[setIndex].photos.length){setIndex++;photoIndex=0;if(setIndex>=this.sets.length)
break;}
if(preloadThumbPhotos[preloadOffset]==undefined)
preloadThumbPhotos[preloadOffset]=new Image();if(this.sets[setIndex].photos[photoIndex].thumb!=undefined){preloadThumbPhotos[preloadOffset].src=this.sets[setIndex].photos[photoIndex].thumb.src;preloadOffset++;}
photoIndex++;}
if(this.photoIndex>=0&&this.photoIndex<set.photos.length){var photo=set.photos[this.photoIndex];if(photo.web!=undefined){document.getElementById("PhotoImgLink").setAttribute("href",photo.orig.src);}else{document.getElementById("PhotoImgLink").removeAttribute("href");}
if(this.updateWebTimerID!=undefined)
window.clearTimeout(this.updateWebTimerID);var g=this;this.updateWebTimerID=window.setTimeout(function(){g.updateWebPhoto(photo);},200);var eltPhotoMeta=document.getElementById("PhotoMeta");var eltPhotoMetaNoPhoto=document.getElementById("PhotoMetaNoPhoto");var idx=(photo.index+1)+"/"+this.numPhotos;if(photo.web==undefined){eltPhotoMeta.style.display="none";eltPhotoMetaNoPhoto.style.display="block";eltPhotoMetaNoPhoto.firstChild.nodeValue=idx;}else{eltPhotoMeta.style.display="block";eltPhotoMetaNoPhoto.style.display="none";elt=document.getElementById("PhotoIndex");elt.firstChild.nodeValue=idx;elt=document.getElementById("PhotoTitle");var title=photo.title;if(title!=undefined&&title.length>0)
elt.firstChild.nodeValue=photo.title;else
elt.firstChild.nodeValue="";elt=document.getElementById("PhotoDate");elt.firstChild.nodeValue=(photo.time!=undefined?formatDate(photo.time):"");elt=document.getElementById("PhotoTime");elt.firstChild.nodeValue=(photo.time!=undefined?formatTime(photo.time):"");}}
if(updateParent==undefined||updateParent){var gal=this;if(this.updateParentTimeoutID!=undefined)
window.clearTimeout(this.updateParentTimeoutID);this.updateParentTimeoutID=window.setTimeout(function(){gal.updateParentSelection(true,focusOnTrackPoint);},500);}}
var preloadWebPhoto=new Image();function updateWebPhoto(photo){var offBuffer=(this.activeBuffer+1)%2;var elt=document.getElementById("PhotoImg"+offBuffer);if(photo.web!=undefined){if(photo.web.src!=elt.src)
this.setLoading(true);this.lastWebPhotoLoaded=photo.web.src;elt.src=photo.web.src;}else{elt.src=this.imgRoot+BLANK_IMG_SRC;}
if(OPERA){var b="PhotoImg"+offBuffer;window.setTimeout(function(){photoLoaded(b,true);},100);}
var set=this.sets[this.setIndex];if(this.photoIndex+1<set.photos.length){preloadWebPhoto.src=set.photos[this.photoIndex+1].web.src;}else if(this.setIndex<this.sets.length-1){if(this.sets[this.setIndex+1].photos[0].web!=undefined)
preloadWebPhoto.src=this.sets[this.setIndex+1].photos[0].web.src;}}
function updateThumb(elt,photo,linked,offset,className){elt.className=className;elt.style.display="";var noPhotoLabel=elt.parentNode.lastChild;if(noPhotoLabel.nodeName.toLowerCase()=="div")
elt.parentNode.removeChild(noPhotoLabel);if(photo==undefined){elt.src=this.imgRoot+BLANK_IMG_SRC;elt.alt="";}else if(photo.text!=undefined){elt.src=this.imgRoot+BLANK_IMG_SRC;elt.alt="";elt.className="None";noPhotoLabel=document.createElement("div");noPhotoLabel.className="NoPhotoLabel";noPhotoLabel.appendChild(document.createTextNode(photo.text));elt.parentNode.appendChild(noPhotoLabel);}else{elt.src=photo.thumb.src;if(photo.title!=undefined){elt.alt=photo.title;elt.title=elt.alt;}else{elt.alt="";elt.title=elt.alt;}}
var link=document.getElementById("PhotoLink"+offset);if(linked)
enableLink(link);else
disableLink(link);}
function movePhotos(n,updateParent){if(this.isLoading)
return;if(this.sets.length===0||this.setIndex<0||this.setIndex>=this.sets.length)
return;var set=this.sets[this.setIndex];if(this.photoIndex+n<0){if(this.setIndex===0)
return;this.setIndex--;n=this.sets[this.setIndex].photos.length+this.photoIndex+n;if(n<0){this.movePhotos(n,updateParent);return;}else{this.photoIndex=n;}}else if(this.photoIndex+n>=set.photos.length){if(this.setIndex==this.sets.length-1)
return;this.setIndex++;n=this.photoIndex+n-set.photos.length;if(n>0){this.movePhotos(n,updateParent);return;}else{this.photoIndex=n;}}else{this.photoIndex+=n;}
this.renderPhotos(updateParent);}
function selectPhoto(setIndex,photoIndex){if(this.isLoading)
return;if(this.sets.length===0||setIndex<0||setIndex>=this.sets.length)
return;var set=this.sets[setIndex];if(photoIndex<0||photoIndex>=set.photos.length)
return;this.setIndex=setIndex;this.photoIndex=photoIndex;this.renderPhotos();}
function getSelectedPhoto(){if(this.sets.length===0||this.setIndex<0||this.setIndex>=this.sets.length)
return undefined;var set=this.sets[this.setIndex];if(this.photoIndex<0||this.photoIndex>=set.photos.length)
return undefined;return set.photos[this.photoIndex];}
function moveSets(n){if(this.isLoading)
return false;var newIndex=this.setIndex+n;if(newIndex<0||newIndex>=this.sets.length)
return false;this.setIndex=newIndex;this.photoIndex=0;this.renderPhotos();return false;}
function selectSet(n){if(this.isLoading)
return;if(n<0||n>=this.sets.length)
return;if(this.setIndex!=n)
this.photoIndex=0;this.setIndex=n;var gallery=this;window.setTimeout(function(){gallery.renderPhotos(true,true);},10);}
function galleryFirstPhoto(){this.setIndex=0;this.photoIndex=0;this.selectSet(0);}
function galleryLastPhoto(){this.setIndex=this.sets.length-1;this.photoIndex=this.sets[this.setIndex].photos.length-1;this.selectSet(this.sets.length-1);}
function updateParentSelection(updatePlacemarks,focusOnTrackPoint){var map=this.getMap();var focusPhotoIndex=undefined;if(!focusOnTrackPoint)
focusPhotoIndex=this.photoIndex;if(map!=undefined){if(this.view==VIEW_FULL){map.focusPoint(this.setIndex,true,false,this.centerOffset,focusPhotoIndex,true);}else if(this.view==VIEW_PHOTO){map.focusPoint(this.setIndex,true,false,{x:this.centerOffset.x*2/3,y:this.centerOffset.y*2/3},focusPhotoIndex,true);}else if(this.view==VIEW_TEXT){map.focusPoint(this.setIndex,true,false,{x:this.centerOffset.x/3,y:this.centerOffset.y/3},focusPhotoIndex,true);}else{map.focusPoint(this.setIndex,true,false,undefined,focusPhotoIndex,true);}
if(USE_OLD_MAPS&&map.renderPaths){map.renderPaths(undefined,map);}
if(updatePlacemarks==undefined||updatePlacemarks)
map.renderPhotoPlacemarks(this.setIndex,this.photoIndex,true);this.updatedParent=true;}}
function showViewer(){var i,j,n=0;for(i=0;i<this.sets.length;i++){for(j=0;j<this.sets[i].photos.length;j++){var p=this.sets[i].photos[j];if(p==undefined||p.orig==undefined||p.orig.src==undefined)
continue;if(i==this.setIndex&&j==this.photoIndex){this.viewer.show(n);window.parent.focus();return false;}
n++;}}
log.error("No photo index "+this.setIndex+":"+this.photoIndex);return false;}
function setWebPhotoLoading(isLoading){this.isLoading=isLoading;var elt=document.getElementById("LoadingIcon");if(elt==undefined)
return;elt.style.display=(isLoading?"":"none");}
function photoLoaded(imgID,manual){if(OPERA&&!manual)return;var gallery=getGallery();if(gallery==undefined)
return;var img=document.getElementById(imgID);if(img!=undefined&&img.src!=undefined){if(gallery.lastWebPhotoLoaded!=undefined&&gallery.lastWebPhotoLoaded!=img.src){log.error("Sync issue: "+img.src+" "+gallery.lastWebPhotoLoaded);}}
try{if(gallery.sets==undefined||gallery.sets.length===0||gallery.setIndex<0||gallery.setIndex>=gallery.sets.length)
return;}catch(e){return;}
var offBuffer=(gallery.activeBuffer+1)%2;var photoElt=document.getElementById("PhotoImg"+offBuffer);var doShowPhoto=true;var set=gallery.sets[gallery.setIndex];if(gallery.photoIndex>=0&&gallery.photoIndex<set.photos.length){var photo=gallery.sets[gallery.setIndex].photos[gallery.photoIndex];if(photo.web!=undefined){var photoBoxElt=document.getElementById("Photo");var photoBoxH=photoBoxElt.clientHeight;var photoBoxW=photoBoxElt.clientWidth;var border=2*5;var w=photo.web.width;var h=photo.web.height;if(w>MAX_WEB_WIDTH){w=MAX_WEB_WIDTH;h=parseInt(photo.web.height/photo.web.width*w);}
if(h>MAX_WEB_HEIGHT){h=MAX_WEB_HEIGHT;w=parseInt(photo.web.width/photo.web.height*h);}
photoElt.style.left=((photoBoxW-w-border)/2)+"px";photoElt.style.top=((photoBoxH-h-border)/2)+"px";photoElt.style.width=w+"px";photoElt.style.height=h+"px";}else{doShowPhoto=false;}}
var activePhotoElt=document.getElementById("PhotoImg"+gallery.activeBuffer);activePhotoElt.style.visibility="hidden";if(doShowPhoto&&photoElt.src.indexOf(BLANK_IMG_SRC)==-1)
photoElt.style.visibility="visible";gallery.activeBuffer=offBuffer;gallery.setLoading(false);}
function disableLink(elt){if(elt==undefined)
return;if(elt.getAttribute("href")!=undefined&&elt.getAttribute("href").length>1){elt.setAttribute("href2",elt.getAttribute("href"));elt.removeAttribute("href");}}
function enableLink(elt){if(elt==undefined)
return;if(elt.getAttribute("href2")!=undefined&&elt.getAttribute("href2").length>1){elt.setAttribute("href",elt.getAttribute("href2"));elt.removeAttribute("href2");}}
function closeWin(){document.getElementById("PhotoImg0").style.visibility="hidden";document.getElementById("PhotoImg1").style.visibility="hidden";var map=getMap();if(map!=undefined){if(this.updateParentTimeoutID!=undefined){window.clearTimeout(this.updateWebTimerID);window.clearTimeout(this.updateParentTimeoutID);}
map.hideAllInfoBoxes(true);map.renderPhotoPlacemarks(this.setIndex,-1,true);map.setMapState();var off=undefined;if(this.view==VIEW_FULL){off=this.centerOffset;}else if(this.view==VIEW_PHOTO){off={x:this.centerOffset.x*2/3,y:this.centerOffset.y*2/3};}else if(this.view==VIEW_TEXT){off={x:this.centerOffset.x/3,y:this.centerOffset.y/3};}
if(off!=undefined&&this.updatedParent){map.animatePan(off.x,off.y);}}
this.setLoading(false);}
function showFullView(){this.showView(VIEW_FULL);}
function showPhotoView(){this.showView(VIEW_PHOTO);}
function showTextView(){this.showView(VIEW_TEXT);}
function showView(view){var map=getMap();if(map==undefined)
return;var photos=document.getElementById("Gallery");var photo=document.getElementById("Photo");var text=document.getElementById("Sidebar");var toolbarImg=document.getElementById("ToolbarImg");var photosW=parseInt(GALLERY_W*2/3)-8;var textW=GALLERY_W-photosW;var panW=0;var offset=0;if(this.view==VIEW_FULL){offset=0;}else if(this.view==VIEW_PHOTO){offset=textW;}else if(this.view==VIEW_TEXT){offset=photosW;}
var suffix=(IE&&!IE7)?"-indexed":"";if(view==VIEW_FULL){panW=-offset;togglePhotosVisibility("visible",this.activeBuffer);text.style.display="";toolbarImg.src="toolbar-view-full"+suffix+".png";this.view=VIEW_FULL;}else if(view==VIEW_PHOTO){panW=-offset+textW;togglePhotosVisibility("visible",this.activeBuffer);text.style.display="none";toolbarImg.src="toolbar-view-photo"+suffix+".png";this.view=VIEW_PHOTO;}else if(view==VIEW_TEXT){panW=-offset+photosW;togglePhotosVisibility("hidden",this.activeBuffer);text.style.display="";toolbarImg.src="toolbar-view-text"+suffix+".png";this.view=VIEW_TEXT;}else{throw("Invalid view: "+view);}
map.panInfoBox(panW);map.setMapState();var _this=this;if(this.updateParentTimeoutID!=undefined)
window.clearTimeout(this.updateParentTimeoutID);this.updateParentTimeoutID=window.setTimeout(function(){_this.updateParentSelection(false);},200);}
function togglePhotosVisibility(visibility,activeBuffer){document.getElementById("Gallery").style.visibility=visibility;document.getElementById("PhotoImg"+activeBuffer).style.visibility=visibility;}
function mouseWheel(event){preventDefault(event);var gallery=document.gallery;if(event.wheelDelta!=undefined){if(event.wheelDelta>0)
gallery.movePhotos(-1);else
gallery.movePhotos(1);}else{if(event.detail<0)
gallery.movePhotos(-1);else
gallery.movePhotos(1);}
return false;}
function focusEvent(event){try{event=getEvent(event);if(document.gallery==undefined){throw"Can't get gallery from event";}
var gallery=document.gallery;if(event.type=="mouseover"){gallery.overSidebar=true;return false;}else if(event.type=="mouseout"){gallery.overSidebar=false;return false;}
return true;}catch(e){log.error("focusEvent",e);throw e;}}
var gkeyHandled=false;function handleGalleryEvent(event){try{event=getEvent(event);if(document.gallery==undefined){throw"Can't get gallery from event";}
var gallery=document.gallery;if(event.type=="mousewheel"||event.type=="DOMMouseScroll"){if(gallery.overSidebar)
return true;return mouseWheel(event);}else if(event.type=="keydown"){gkeyHandled=!handleGalleryKey(gallery,event);return!gkeyHandled;}else if(event.type=="keypress"){return!gkeyHandled;}
return true;}catch(e){log.error("handleGalleryEvent",e);throw e;}}
function handleGalleryKey(gallery,event){if(event.ctrlKey||event.altKey)
return true;var keyCode=event.keyCode;switch(keyCode){case 37:case 38:gallery.movePhotos(-1);break;case 39:case 40:gallery.movePhotos(1);break;case 33:gallery.moveSets(-1);break;case 34:gallery.moveSets(1);break;case 36:gallery.firstPhoto();break;case 35:gallery.lastPhoto();break;case 32:case 13:preventDefault(event);gallery.showViewer();return false;case 27:gallery.closeWin();break;default:return true;}
return false;}
var VIEWER_INDEX=0;var SLIDE_DURATION=4000;var SLIDE_OFFSET=50;var SLIDE_PHOTOS=true;var FADE_BORDER=false;var FADE_STEPS=10;var MOVE_STEP=1;var PRELOAD_TIMEOUT=60000;var BORDER_WIDTH=5;var FONT_SIZE=10;var LINE_HEIGHT="0.7em";var OFFSET_LEFT=0;var OFFSET_TOP=0;var REST_URL="/rest/";var P_IMG_ROOT="http://static.triptracker.net/jsmap/images/photoviewer";var TOOLBAR_IMG="toolbar.png";var TOOLBAR_IMG_RUNNING="toolbar2.png";var TOOLBAR_IMG_BACK="toolbar-back";var TOOLBAR_IMG_MASK="toolbar-mask.png";var TOOLBAR_IMG_LOADING="loading-anim.gif";var TOOLBAR_W=440;var TOOLBAR_H=75;var TOOLBAR_IMG_W=420;var TOOLBAR_IMG_H=44;var TOOLBAR_LINK="http://slideshow.triptracker.net";var TOOLBAR_OPACITY=0.7;var TOOLBAR_FONT_COLOR="#c0c0c0";var TOOLBAR_FONT_STYLE="tahoma, verdana, arial, helvetica, sans-serif";var BYLINE_FONT_COLOR=TOOLBAR_FONT_COLOR;var BYLINE_FONT_STYLE=TOOLBAR_FONT_STYLE;var BYLINE_POSITION_RIGHT=5;var BYLINE_POSITION_BOTTOM=5;var VIEWER_ID_PREFIX="PhotoViewer";var VIEWER_ID_BACK=VIEWER_ID_PREFIX+"Back";var VIEWER_ID_TOOLBAR=VIEWER_ID_PREFIX+"Toolbar";var VIEWER_ID_TOOLBAR_MAP=VIEWER_ID_PREFIX+"ToolbarMap";var VIEWER_ID_TOOLBAR_IMG=VIEWER_ID_PREFIX+"ToolbarImg";var VIEWER_ID_LOADING=VIEWER_ID_PREFIX+"Loading";var VIEWER_ID_TIME=VIEWER_ID_PREFIX+"Time";var VIEWER_ID_TITLE=VIEWER_ID_PREFIX+"Title";var VIEWER_ID_BYLINE=VIEWER_ID_PREFIX+"Byline";var VIEWER_ID_PHOTO=VIEWER_ID_PREFIX+"Photo";var TITLE_MAX_LENGTH=140;var TOOLBAR_IMG_LOADING_LEFT=273;var TOOLBAR_IMG_LOADING_TOP=24;function PhotoViewer(win,handleKeys){this.setImageRoot=setImageRoot;this.add=addPhoto;this.show=showPhoto;this.close=closePhoto;this.isShown=isPhotoShown;this.setBackground=setPhotoBackground;this.setShowToolbar=setShowToolbar;this.setToolbarImage=setToolbarImage;this.setShowCallback=setShowCallback;this.setCloseCallback=setCloseCallback;this.setEndCallback=setEndCallback;this.setLoading=setPhotoLoading;this.addBackShade=addBackShade;this.addToolbar=addToolbar;this.addCaptions=addCaptions;this.next=nextPhoto;this.prev=prevPhoto;this.first=firstPhoto;this.last=lastPhoto;this.slideShow=slideShow;this.slideShowStop=slideShowStop;this.startSlideShow=startSlideShow;this.handleKey=viewerHandleKey;this.checkStartFragmentIdentifier=checkStartFragmentIdentifier;this.checkStopFragmentIdentifier=checkStopFragmentIdentifier;this.setStartFragmentIdentifier=setStartFragmentIdentifier;this.setStopFragmentIdentifier=setStopFragmentIdentifier;this.email=emailPhoto;this.favorite=favoritePhoto;this.permalink=linkPhoto;this.setBackgroundColor=setBackgroundColor;this.setBorderWidth=setBorderWidth;this.setSlideDuration=setSlideDuration;this.disablePanning=disablePanning;this.enablePanning=enablePanning;this.disableFading=disableFading;this.enableFading=enableFading;this.disableShade=disableShade;this.enableShade=enableShade;this.setShadeColor=setShadeColor;this.setShadeOpacity=setShadeOpacity;this.setFontSize=setFontSize;this.setFont=setFont;this.enableAutoPlay=enableAutoPlay;this.disableAutoPlay=disableAutoPlay;this.enableEmailLink=enableEmailLink;this.disableEmailLink=disableEmailLink;this.enablePhotoLink=enablePhotoLink;this.disablePhotoLink=disablePhotoLink;this.setOnClickEvent=setOnClickEvent;this.enableLoop=enableLoop;this.disableLoop=disableLoop;this.enableToolbarAnimator=enableToolbarAnimator;this.disableToolbarAnimator=disableToolbarAnimator;this.enableToolbar=enableToolbar;this.disableToolbar=disableToolbar;this.setControlsImageMap=setControlsImageMap;this.setOverrideToolbarStyles=setOverrideToolbarStyles;this.setNoPadding=setNoPadding;this.hideOverlappingElements=hideOverlappingElements;this.showOverlappingElements=showOverlappingElements;this.id=VIEWER_ID_PREFIX+VIEWER_INDEX;VIEWER_INDEX++;this.photos=[];this.index=0;this.win=(win!=undefined?win:window);this.shown=false;this.showToolbar=true;this.backgroundColor="#000000";this.shadeColor="#000000";this.shadeOpacity=0.7;this.borderColor="#000000";this.shadeColor="#000000";this.shadeOpacity=0.7;this.borderWidth=BORDER_WIDTH;this.backgroundShade=true;this.fadePhotos=true;this.autoPlay=false;this.enableEmailLink=true;this.enablePhotoLink=true;this.slideDuration=SLIDE_DURATION;this.panPhotos=SLIDE_PHOTOS;this.fontSize=FONT_SIZE;this.font=undefined;if(handleKeys==undefined||handleKeys){if(this.win.addEventListener){this.win.addEventListener("keydown",viewerHandleKey,false);}else{this.win.document.attachEvent("onkeydown",viewerHandleKey);}}
this.win.document.viewer=this;if(OPERA)
this.disableFading();}
function PhotoImg(id,src,w,h,time,title,byline){this.id=id;this.src=src;this.w=parseInt(w);this.h=parseInt(h);this.time=time;this.title=title;this.byline=byline;}
function getViewer(){var viewer=undefined;var win=window;while(viewer==undefined){try{viewer=win.document.viewer;}catch(e){break;}
if(win===win.parent){break;}
win=win.parent;}
return viewer;}
function setImageRoot(root){P_IMG_ROOT=root;}
function addPhoto(photo,title,time,byline){var type=typeof photo;if(typeof photo=="string"){photo=new PhotoImg(undefined,photo,undefined,undefined,time,title,byline);}
this.photos.push(photo);}
function setPhotoBackground(color,border,doShade){if(color!=undefined)
this.backgroundColor=color;if(border!=undefined)
this.borderColor=border;if(doShade!=undefined)
this.backgroundShade=doShade;}
function setPhotoLoading(isLoading){this.isLoading=isLoading;var elt=this.win.document.getElementById(VIEWER_ID_LOADING);if(elt==undefined)
return;elt.style.display=isLoading?"":"none";}
function setBackgroundColor(color){this.backgroundColor=color;this.borderColor=color;}
function setBorderWidth(width){this.borderWidth=width;}
function setSlideDuration(duration){this.slideDuration=duration;}
function disableShade(){this.backgroundShade=false;}
function enableShade(){this.backgroundShade=true;}
function setShadeColor(color){this.shadeColor=color;}
function setShadeOpacity(opacity){this.shadeOpacity=opacity;}
function disableFading(){this.fadePhotos=false;}
function enableFading(){this.fadePhotos=true;}
function disablePanning(){this.panPhotos=false;}
function enablePanning(){this.panPhotos=true;}
function setFontSize(size){this.fontSize=size;}
function setFont(font){this.font=font;}
function enableAutoPlay(){this.autoPlay=true;}
function disableAutoPlay(){this.autoPlay=false;}
function enableEmailLink(){this.enableEmailLink=true;}
function disableEmailLink(){this.enableEmailLink=false;}
function enablePhotoLink(){this.enablePhotoLink=true;}
function disablePhotoLink(){this.enablePhotoLink=false;}
function setOnClickEvent(newfunc){this.customOnClickEvent=newfunc;}
function enableLoop(){this.loop=true;}
function disableLoop(){this.loop=false;}
function enableToolbar(){this.showToolbar=true;}
function disableToolbar(){this.showToolbar=false;}
function enableToolbarAnimator(){this.toolbarAnimator=new ToolbarAnimator(this);}
function disableToolbarAnimator(){if(this.toolbarAnimator!=undefined){this.toolbarAnimator.reset();this.toolbarAnimator=undefined;}}
function setControlsImageMap(imagemap){this.customImageMap=imagemap;}
function setOverrideToolbarStyles(overrideToolbarStyles){this.overrideToolbarStyles=overrideToolbarStyles;}
function setNoPadding(nopadding){this.nopadding=nopadding;}
function showPhoto(index,cropWidth,opacity){if(this.photos.length===0){return true;}
if(getRootWindow().permissionDenied&&this.badgeMode==undefined&&!getRootWindow().livemode){this.setStartFragmentIdentifier(index);return true;}
if(index!=undefined)
this.index=index;if(this.index<0||this.index>=this.photos.length){log.error("Invalid photo index");return true;}
var doc=this.win.document;var firstShow=false;if(!this.shown){firstShow=true;doc.viewer=this;try{this.hideOverlappingElements();}catch(e){}}
var zIndex=16384;var winSize=getWindowSize(this.win);var availW=winSize.w-(this.nopadding?this.borderWidth*2:20);var availH=winSize.h-(this.nopadding?this.borderWidth*2:20);var scrollPos=getScrollPos(this.win);var scrollLeft=scrollPos.left;var scrollTop=scrollPos.top;this.addBackShade(zIndex);if(this.showToolbar){this.addToolbar(availW,zIndex);this.addCaptions();}
var photo=this.photos[this.index];if(isNaN(photo.w)||isNaN(photo.h)){if(photo.preloadImage!=undefined){if(isNaN(photo.w)&&photo.preloadImage.width>0)
photo.w=photo.preloadImage.width;if(isNaN(photo.h)&&photo.preloadImage.height>0)
photo.h=photo.preloadImage.height;}else{this.index--;this.next();return false;}}
this.shown=true;var offset=(this.nopadding?0:20);var pw=-1;var ph=-1;if(parseInt(photo.w)>availW||parseInt(photo.h)>availH){if(parseInt(photo.w)/availW>parseInt(photo.h)/availH){pw=availW-offset;ph=parseInt(pw*photo.h/photo.w);}else{ph=availH-offset;pw=parseInt(ph*photo.w/photo.h);}}else{pw=parseInt(photo.w);ph=parseInt(photo.h);}
if(pw<=0||ph<=0){if(!this.showToolbar)
throw"Missing photo dimension";}
if(cropWidth==undefined)
cropWidth=0;var photoDiv=doc.createElement("div");photoDiv.id=VIEWER_ID_PHOTO;photoDiv.style.visibility="hidden";photoDiv.style.position="absolute";photoDiv.style.zIndex=zIndex;photoDiv.style.overflow="hidden";photoDiv.style.border=this.borderWidth+"px solid "+this.borderColor;photoDiv.style.textAlign="center";photoDiv.style.backgroundColor=this.backgroundColor;var photoElt=doc.createElement("img");photoElt.style.visibility="hidden";photoElt.style.position="relative";photoElt.style.backgroundColor=this.backgroundColor;photoElt.style.border="none";photoElt.style.cursor="pointer";photoElt.style.zIndex=(parseInt(photoDiv.style.zIndex)+1)+"";photoElt.onclick=onClickEvent;if(opacity!=undefined&&this.fadePhotos){var fadeElt=(FADE_BORDER?photoDiv:photoElt);setOpacity(fadeElt,opacity);}
var left=parseInt((availW-pw)/2)+(this.nopadding?0:OFFSET_LEFT);photoDiv.style.left=(left+scrollLeft+cropWidth/2)+"px";var top=parseInt((availH-ph)/2)+(this.nopadding?0:OFFSET_TOP);photoDiv.style.top=(top+scrollTop)+"px";photoElt.style.visibility="hidden";photoDiv.style.width=(pw-cropWidth)+"px";photoDiv.style.height=ph+"px";photoElt.style.width=pw+"px";photoElt.style.height=ph+"px";photoElt.src=photo.src;photoDiv.style.visibility="visible";photoElt.style.visibility="visible";photoDiv.appendChild(photoElt);doc.body.appendChild(photoDiv);if(this.photoDiv!=undefined){try{doc.body.removeChild(this.photoDiv);}catch(e){}}
this.photoDiv=photoDiv;this.photoImg=photoElt;this.setLoading(false);if(this.showCallback!=undefined)
this.showCallback(this.index);if(firstShow&&this.autoPlay){this.slideShow(true);}
return false;}
function isPhotoShown(){return this.shown;}
function closeViewer(){getViewer().close();}
function onPhotoLoad(event){var viewer=getViewer();if(viewer!=undefined){if(flickrHack(viewer,viewer.index)){viewer.setLoading(false);viewer.index--;viewer.next();return;}
viewer.show();}}
function closePhoto(){var win=this.win;if(win==undefined)
win=window;var doc=win.document;var elt=this.photoDiv;if(elt!=undefined)
doc.body.removeChild(elt);elt=doc.getElementById(VIEWER_ID_BACK);if(elt!=undefined)
doc.body.removeChild(elt);elt=doc.getElementById(VIEWER_ID_TOOLBAR);if(elt!=undefined)
doc.body.removeChild(elt);elt=doc.getElementById(VIEWER_ID_BYLINE);if(elt!=undefined)
doc.body.removeChild(elt);this.shown=false;this.slideShowRunning=false;this.slideShowPaused=false;try{this.showOverlappingElements();}catch(e){log.error(e);}
if(this.toolbarAnimator!=undefined){this.toolbarAnimator.reset();}
if(this.closeCallback!=undefined)
this.closeCallback(this.index);}
function nextPhoto(n){if(this.isLoading)
return;if(n==undefined)
n=1;var oldIndex=this.index;if(this.index+n>=this.photos.length){if(this.loop&&n!=this.photos.length){this.index=0;}else{this.index=this.photos.length-1;}}else if(this.index+n<0){if(n<-1)
this.index=0;else if(this.loop)
this.index=this.photos.length-1;else
return;}else{this.index+=n;}
if(this.index==oldIndex)
return;this.slideShowStop();var img=new Image();this.photos[this.index].preloadImage=img;this.setLoading(true);img.onload=onPhotoLoad;img.onerror=onPhotoLoad;if(this.photos[this.index].src!=undefined){img.src=this.photos[this.index].src;}else{onPhotoLoad();}}
function prevPhoto(n){if(n==undefined)
n=1;this.next(-n);}
function firstPhoto(){this.prev(this.photos.length);}
function lastPhoto(){this.next(this.photos.length);}
function startSlideShow(){getViewer().slideShow(true);}
var slideTimeout;var slidePreloadImageLoaded=false;var slidePreloadTime=undefined;function slideShow(start){if(this.toolbarAnimator!=undefined)
this.toolbarAnimator.slideshowAction();var nextIndex=this.index+1;if(nextIndex>=this.photos.length){if(this.loop)
nextIndex=0;else if(!this.slideShowPaused&&!this.slideShowRunning){this.setToolbarImage(P_IMG_ROOT+"/"+TOOLBAR_IMG);return;}}
var doc=this.win.document;var viewer=this;var photoElt=this.photoImg;if(photoElt==undefined)
return;var photoDiv=this.photoDiv;var fadeElt=(FADE_BORDER?photoDiv:photoElt);if(start!=undefined&&start===true){if(this.slideShowPaused){this.slideShowPaused=false;this.setToolbarImage(P_IMG_ROOT+"/"+TOOLBAR_IMG_RUNNING);return;}else if(this.slideShowRunning){this.slideShowPaused=true;this.setToolbarImage(P_IMG_ROOT+"/"+TOOLBAR_IMG);return;}else{this.slideShowRunning=true;this.slideShowPaused=false;this.slideFirstPhoto=true;this.setToolbarImage(P_IMG_ROOT+"/"+TOOLBAR_IMG_RUNNING);}
if(this.isLoading||this.index>this.photos.length-1){return;}}else if(this.slideShowPaused){window.setTimeout(function(){viewer.slideShow(false);},200);return;}else if(!this.slideShowRunning){this.setToolbarImage(P_IMG_ROOT+"/"+TOOLBAR_IMG);return;}
var left=0;if(photoElt.leftOffset!=undefined){left=parseFloat(photoElt.leftOffset);}
if(left===0){if(nextIndex<this.photos.length){slidePreloadImageLoaded=false;var slidePreloadImage=new Image();this.photos[nextIndex].preloadImage=slidePreloadImage;slidePreloadTime=getTimeMillis();slidePreloadImage.onload=onSlideLoad;slidePreloadImage.onerror=onSlideLoad;slidePreloadImage.src=this.photos[nextIndex].src;}}
if(left>-SLIDE_OFFSET){left-=MOVE_STEP;if(-left<=FADE_STEPS){if(fadeElt.style.opacity!=undefined&&parseFloat(fadeElt.style.opacity)<1){if(this.fadePhotos&&this.photos[this.index].src!=undefined)
setOpacity(fadeElt,-left/FADE_STEPS);}}else if(left+SLIDE_OFFSET<FADE_STEPS){if(nextIndex<this.photos.length&&!slidePreloadImageLoaded){if(slidePreloadTime!=undefined&&getTimeMillis()-slidePreloadTime>PRELOAD_TIMEOUT)
slidePreloadImageLoaded=true;left++;this.setLoading(true);}else{if(nextIndex<this.photos.length&&this.fadePhotos&&this.photos[this.index].src!=undefined)
setOpacity(fadeElt,(left+SLIDE_OFFSET)/FADE_STEPS);}}
photoElt.leftOffset=left;if(this.panPhotos&&!this.slideFirstPhoto){photoElt.style.left=left+"px";}}else{if(nextIndex>=this.photos.length){this.slideShowRunning=false;this.slideShowPaused=false;this.setToolbarImage(P_IMG_ROOT+"/"+TOOLBAR_IMG);if(this.toolbarAnimator!=undefined)
this.toolbarAnimator.reset();if(this.endCallback!=undefined)
this.endCallback();return;}
this.index=nextIndex;this.slideFirstPhoto=false;this.show(undefined,(this.panPhotos?SLIDE_OFFSET:0),0);fadeElt=(FADE_BORDER?this.photoDiv:this.photoImg);if(this.fadePhotos)
setOpacity(fadeElt,0);this.photoImg.leftOffset=0;if(this.panPhotos)
this.photoImg.style.left="0px";}
var pause=this.slideDuration/SLIDE_OFFSET;if(this.slideFirstPhoto){pause/=2;}
slideTimeout=window.setTimeout(function(){viewer.slideShow(false);},pause);}
function onSlideLoad(event){var viewer=getViewer();if(viewer!=undefined){if(flickrHack(viewer,viewer.index+1)){var slidePreloadImage=viewer.photos[viewer.index+1].preloadImage;slidePreloadImage.src=viewer.photos[viewer.index+1].src;slidePreloadTime=getTimeMillis();return;}
slidePreloadImageLoaded=true;viewer.setLoading(false);}}
function slideShowStop(){this.slideShowRunning=false;this.slideShowPaused=false;var doc=this.win.document;var photoElt=this.photoImg;if(photoElt!=undefined){if(this.fadePhotos){var fadeElt=(FADE_BORDER?this.photoDiv:photoElt);setOpacity(fadeElt,1);}
photoElt.style.left="0px";}}
function addBackShade(zIndex){var doc=this.win.document;if(doc.getElementById(VIEWER_ID_BACK)!=undefined){return;}
var photoBack=doc.createElement("div");photoBack.id=VIEWER_ID_BACK;photoBack.style.top="0px";photoBack.style.left="0px";photoBack.style.bottom="0px";photoBack.style.right="0px";photoBack.style.margin="0";photoBack.style.padding="0";photoBack.style.border="none";photoBack.style.cursor="pointer";if(IE&&!(IE7&&STRICT_MODE)){photoBack.style.position="absolute";var docSize=getDocumentSize(this.win);photoBack.style.width=(docSize.w-21)+"px";photoBack.style.height=(docSize.h-4)+"px";}else{photoBack.style.position="fixed";photoBack.style.width="100%";photoBack.style.height="100%";}
photoBack.style.zIndex=zIndex-1;photoBack.style.backgroundColor=this.shadeColor;if(this.backgroundShade)
setOpacity(photoBack,this.shadeOpacity);else
setOpacity(photoBack,0.0);photoBack.onclick=onClickEvent;doc.body.appendChild(photoBack);}
function addToolbar(availW,zIndex){var doc=this.win.document;var i;if(doc.getElementById(VIEWER_ID_TOOLBAR)!=undefined)
return;var photoToolbar=doc.createElement("div");photoToolbar.id=VIEWER_ID_TOOLBAR;setOpacity(photoToolbar,TOOLBAR_OPACITY);photoToolbar.style.zIndex=zIndex+1;var imgBack=TOOLBAR_IMG_BACK;if(!isHosted()){imgBack+="-nologo";}
if(IE&&!IE7){imgBack+="-indexed";}
imgBack+=".png";if(!this.overrideToolbarStyles){var bottom=10;if(IE&&!(IE7&&STRICT_MODE)){photoToolbar.style.position="absolute";if(IE7){var top=getWindowSize(this.win).h+getScrollPos(this.win).top;photoToolbar.style.top=(top-TOOLBAR_H-10)+"px";}else{photoToolbar.style.bottom=bottom+"px";}}else{photoToolbar.style.position="fixed";photoToolbar.style.bottom=bottom+"px";}
photoToolbar.style.left=(availW-TOOLBAR_W+10)/2+"px";photoToolbar.style.width=TOOLBAR_W+"px";photoToolbar.style.height=TOOLBAR_H+"px";photoToolbar.style.textAlign="center";photoToolbar.style.backgroundImage="url('"+P_IMG_ROOT+"/"+imgBack+"')";photoToolbar.style.backgroundPosition="50% 0%";photoToolbar.style.backgroundRepeat="no-repeat";photoToolbar.style.lineHeight=LINE_HEIGHT;}
var toolbarMask=undefined;if(!this.enableEmailLink&&TOOLBAR_IMG_MASK!=undefined){toolbarMask=doc.createElement("img");toolbarMask.style.position="absolute";toolbarMask.style.width=44;toolbarMask.style.height=44;toolbarMask.style.left="289px";toolbarMask.style.top="0px";toolbarMask.src=P_IMG_ROOT+"/"+TOOLBAR_IMG_MASK;photoToolbar.appendChild(toolbarMask);}
if(!this.enablePhotoLink&&TOOLBAR_IMG_MASK!=undefined){toolbarMask=doc.createElement("img");toolbarMask.style.position="absolute";toolbarMask.style.width=44;toolbarMask.style.height=44;toolbarMask.style.left="339px";toolbarMask.style.top="0px";toolbarMask.src=P_IMG_ROOT+"/"+TOOLBAR_IMG_MASK;photoToolbar.appendChild(toolbarMask);}
var imgMap=this.customImageMap;if(imgMap===undefined){imgMap=doc.createElement("map");var areas=[];areas.push(["getViewer().first()","17",getMessage("photoviewer.toolbar.first")]);areas.push(["getViewer().prev()","68",getMessage("photoviewer.toolbar.prev")]);areas.push(["getViewer().slideShow(true)","122",getMessage("photoviewer.toolbar.slideShow")]);areas.push(["getViewer().next()","175",getMessage("photoviewer.toolbar.next")]);areas.push(["getViewer().last()","227",getMessage("photoviewer.toolbar.last")]);if(this.enableEmailLink)
areas.push(["getViewer().email()","300",getMessage("photoviewer.toolbar.email")]);if(this.enablePhotoLink)
areas.push(["getViewer().permalink()","350",getMessage("photoviewer.toolbar.permalink")]);areas.push(["getViewer().close()","402",getMessage("photoviewer.toolbar.close")]);for(i=0;i<areas.length;i++){var area=doc.createElement("area");area.href="javascript:void(0)";area.alt=areas[i][2];area.title=area.alt;area.shape="circle";area.coords=areas[i][1]+", 21, 22";area.onclick=buildAreaMapClosure(areas[i][0]);imgMap.appendChild(area);}}
imgMap.name=VIEWER_ID_TOOLBAR_MAP;imgMap.id=VIEWER_ID_TOOLBAR_MAP;var img=doc.createElement("img");img.id=VIEWER_ID_TOOLBAR_IMG;img.src=P_IMG_ROOT+"/"+TOOLBAR_IMG;img.width=TOOLBAR_IMG_W;img.height=TOOLBAR_IMG_H;img.style.border="none";img.style.background="none";if(STRICT_MODE){img.style.margin="4px 0px 0px 0px";}else{img.style.margin="4px";}
img.useMap="#"+VIEWER_ID_TOOLBAR_MAP;photoToolbar.appendChild(imgMap);photoToolbar.appendChild(img);if(isHosted()){var ttLink=doc.createElement("a");ttLink.style.position="absolute";ttLink.style.bottom="0px";ttLink.style.right="0px";ttLink.style.width="25px";ttLink.style.height="25px";ttLink.style.background="none";ttLink.alt="TripTracker.net";ttLink.title=ttLink.alt;ttLink.cursor=ttLink.alt;ttLink.href=TOOLBAR_LINK;ttLink.target="_new";ttLink.alt="TripTracker Slideshow";ttLink.title=ttLink.alt;photoToolbar.appendChild(ttLink);}
var loadingIcon=doc.createElement("img");loadingIcon.id=VIEWER_ID_LOADING;loadingIcon.width=16;loadingIcon.height=16;loadingIcon.style.display="none";loadingIcon.style.position="absolute";loadingIcon.style.left=(TOOLBAR_IMG_LOADING_LEFT-8)+"px";loadingIcon.style.top=(TOOLBAR_IMG_LOADING_TOP-8)+"px";loadingIcon.src=P_IMG_ROOT+"/"+TOOLBAR_IMG_LOADING;loadingIcon.style.border="none";loadingIcon.style.background="none";photoToolbar.appendChild(loadingIcon);photoToolbar.appendChild(doc.createElement("br"));var photoTime=doc.createElement("span");photoTime.id=VIEWER_ID_TIME;if(!this.overrideToolbarStyles){photoTime.position="relative";photoTime.style.color=TOOLBAR_FONT_COLOR;photoTime.style.fontFamily=TOOLBAR_FONT_STYLE;photoTime.style.fontSize=this.fontSize+"px";if(STRICT_MODE){photoTime.style.lineHeight=this.fontSize+"px";}
if(this.font!=undefined){photoTime.style.font=this.font;}
photoTime.style.cssFloat="none";photoTime.style.textAlign="right";photoTime.style.padding="0px 10px";}
photoTime.appendChild(doc.createTextNode(" "));photoToolbar.appendChild(photoTime);var photoTitle=doc.createElement("span");photoTitle.id=VIEWER_ID_TITLE;if(!this.overrideToolbarStyles){photoTitle.position="relative";photoTitle.style.color=TOOLBAR_FONT_COLOR;photoTitle.style.fontFamily=TOOLBAR_FONT_STYLE;photoTitle.style.fontSize=this.fontSize+"px";if(STRICT_MODE){photoTitle.style.lineHeight=this.fontSize+"px";}
if(this.font!=undefined){photoTitle.style.font=this.font;}
photoTitle.style.cssFloat="none";photoTitle.style.textAlign="left";photoTitle.style.paddingRight="20px";}
photoTitle.appendChild(doc.createTextNode(" "));photoToolbar.appendChild(photoTitle);doc.body.appendChild(photoToolbar);var photoByline=doc.createElement("div");photoByline.appendChild(doc.createTextNode(""));photoByline.style.color=BYLINE_FONT_COLOR;photoByline.style.fontFamily=BYLINE_FONT_STYLE;photoByline.style.fontSize=this.fontSize+"px";if(this.font!=undefined){photoByline.style.font=this.font;}
photoByline.id=VIEWER_ID_BYLINE;photoByline.style.position="absolute";photoByline.style.right=BYLINE_POSITION_RIGHT+"px";photoByline.style.bottom=BYLINE_POSITION_BOTTOM+"px";photoByline.style.zIndex=zIndex+1;photoByline.appendChild(doc.createTextNode(" "));doc.body.appendChild(photoByline);}
function buildAreaMapClosure(func){return function(event){eval(func);blurElement(event);return false;};}
function blurElement(event){var target=getEventTarget(getEvent(event));if(target!=undefined)
target.blur();}
function setToolbarImage(img){var doc=this.win.document;var elt=doc.getElementById(VIEWER_ID_TOOLBAR_IMG);if(elt!=undefined)
elt.src=img;}
function setShowToolbar(doShow){this.showToolbar=doShow;}
function addCaptions(){var photo=this.photos[this.index];var doc=this.win.document;var photoTime=doc.getElementById(VIEWER_ID_TIME);var photoTitle=doc.getElementById(VIEWER_ID_TITLE);var photoByline=doc.getElementById(VIEWER_ID_BYLINE);var time=(this.index+1)+"/"+this.photos.length;if(photo.time!=undefined){time+=" ["+photo.time+"]";}
photoTime.firstChild.nodeValue=time;var title=(photo.title!=undefined?photo.title:"");photoTitle.title="";photoTitle.alt="";if(title.length>TITLE_MAX_LENGTH){photoTitle.title=title;photoTitle.alt=title;title=title.substring(0,TITLE_MAX_LENGTH)+" ...";}
if(title.indexOf("\n")!==0){title=title.replace("\n","<br />");photoTitle.innerHTML=title;}else{photoTitle.nodeValue=title;}
if(photo.byline!=undefined&&photo.byline.length>0){photoByline.firstChild.nodeValue=photo.byline;}else{photoByline.firstChild.nodeValue="";}}
function setCloseCallback(callback){this.closeCallback=callback;}
function setShowCallback(callback){this.showCallback=callback;}
function setEndCallback(callback){this.endCallback=callback;}
function emailPhoto(){var photo=this.photos[this.index];var doc=this.win.document;var title=(photo.title!=undefined?photo.title:getMessage("photoviewer.email.subject.photo"));var mailtoLink="mailto:?subject="+title+"&body="+
getPhotoURL(photo.src);doc.location.href=mailtoLink;}
function getPhotoURL(url){var loc=document.location;if(/\w+:\/\/.+/.test(url)){return url;}else if(url.indexOf("/")===0){return loc.protocol+"//"+loc.host+url;}else{var path=loc.pathname;var pos=path.lastIndexOf("/");if(pos!=-1){path=path.substring(0,pos);}
return loc.protocol+"//"+loc.host+path+"/"+url;}}
function linkPhoto(){var photo=this.photos[this.index];window.open(photo.src);}
function favoritePhoto(){var photo=this.photos[this.index];var doc=this.win.document;var restURL=REST_URL+"markfeatured?id"+photo.id;try{var res=getResponse(restURL,false,true);}catch(e){return;}}
function hideOverlappingElements(node){if(node==undefined){node=this.win.document.body;this.hideOverlappingElements(node);return;}
if(node.style!=undefined&&node.style.visibility!="hidden"){var nodeName=node.nodeName.toLowerCase();if((node.className!=undefined&&node.className.indexOf("SlideshowDoHide")!=-1)||(IE&&(nodeName=="select"||nodeName=="object"||nodeName=="embed"))){node.style.visibility="hidden";if(this.hiddenElements==undefined)
this.hiddenElements=[];this.hiddenElements.push(node);}}
if(node.childNodes!=undefined){var i;for(i=0;i<node.childNodes.length;i++){this.hideOverlappingElements(node.childNodes[i]);}}}
function showOverlappingElements(){var i;if(this.hiddenElements!=undefined){for(i=0;i<this.hiddenElements.length;i++){this.hiddenElements[i].style.visibility="visible";}
this.hiddenElements=[];}}
function viewerHandleKey(event){if(typeof getViewer=='undefined'||!getViewer)
return true;var viewer=getViewer();if(viewer==undefined||!viewer.shown)
return true;event=getEvent(event);if(event.ctrlKey||event.altKey)
return true;var keyCode=event.keyCode;switch(keyCode){case 37:case 38:viewer.prev();break;case 39:case 40:viewer.next();break;case 33:viewer.prev(10);break;case 34:viewer.next(10);break;case 36:viewer.first();break;case 35:viewer.last();break;case 32:case 13:viewer.slideShow(true);break;case 27:viewer.close();break;default:return true;}
preventDefault(event);return false;}
function flickrHack(viewer,index){if(viewer.photos[index]!=undefined){var preloadPhoto=viewer.photos[index].preloadImage;if(preloadPhoto!=undefined&&preloadPhoto.width==500&&preloadPhoto.height==375){var flickrRE=/.+static\.flickr\.com.+_b\.jpg/;if(flickrRE.test(preloadPhoto.src)){viewer.photos[index].src=viewer.photos[index].src.replace(/_b\.jpg/,"_o.jpg");return true;}}}
return false;}
function findPhotosTT(viewer,node){var i;if(node.nodeName.toLowerCase()=="a"){var onclick=node.getAttribute("onclick");if(onclick==undefined){onclick=node.onclick;}
if(onclick!=undefined&&new String(onclick).indexOf("popupImg")!=-1){var popupRE=/.*popupImg\((.+?),(.+?),(.+?)\).*/;if(popupRE.test(onclick)){var url,w,h;if(node.photoUrl!=undefined){url=node.photoUrl;w=node.photoW;h=node.photoH;}else{url=RegExp.$1;if(url.charAt(0)=="'"&&url.charAt(url.length-1)=="'")
url=url.substring(1,url.length-1);w=parseInt(RegExp.$2);h=parseInt(RegExp.$3);}
var photo=new PhotoImg(undefined,url,w,h);var found=false;for(i=0;i<viewer.photos.length;i++){if(viewer.photos[i].src==photo.src){found=true;break;}}
if(!found)
viewer.add(photo);}}}
if(node.childNodes!=undefined){for(i=0;i<node.childNodes.length;i++){findPhotosTT(viewer,node.childNodes[i]);}}}
var defaultViewer=undefined;function popupImg(url,w,h,backColor,showToolbar){var i;if(defaultViewer==undefined)
defaultViewer=new PhotoViewer();else{defaultViewer.photos=[];defaultViewer.index=0;}
if(backColor!=undefined)
defaultViewer.setBackground(backColor,backColor,false);if(showToolbar==undefined||showToolbar){findPhotosTT(defaultViewer,window.document.body);for(i=0;i<defaultViewer.photos.length;i++){if(defaultViewer.photos[i].src==url){defaultViewer.show(i);}}}
if(defaultViewer.photos===undefined||defaultViewer.photos.length===0){defaultViewer.setShowToolbar(false);defaultViewer.add(new PhotoImg(undefined,url,w,h));defaultViewer.show();}
return false;}
function onClickEvent()
{var v=getViewer();if(v.toolbarAnimator!=undefined)
v.toolbarAnimator.reset();if(v.customOnClickEvent!=undefined)
v.customOnClickEvent();else
closeViewer();}
function setupFragmentIdentifierModePhotoViewer(iframeLocation,iframename,viewerJSONArray)
{var viewer=new PhotoViewer();viewer.origRootLocation=document.location.href;viewer.origIFrameLocation=iframeLocation;viewer.iframename=iframename;viewer.setCloseCallback(viewer.setStopFragmentIdentifier);for(var i=0;i<viewerJSONArray.length;i++){viewer.add(viewerJSONArray[i].url,viewerJSONArray[i].title,viewerJSONArray[i].date,viewerJSONArray[i].byline);}
window.frames[viewer.iframename].location=viewer.origIFrameLocation+"#"+viewer.origRootLocation;viewer.checkStartFragmentIdentifier();}
function checkStartFragmentIdentifier(){var href=document.location.href;if(href.indexOf("#startphoto=")==-1){window.setTimeout(checkStartFragmentIdentifier,500);}else{var startPhoto=parseInt(href.substring(href.lastIndexOf("=")+1));var viewer=getViewer();if(viewer.origRootLocation.indexOf("#")==-1)
viewer.origRootLocation+="#";if(FIREFOX){window.history.back();}else{document.location.href=viewer.origRootLocation;}
viewer.show(startPhoto);}}
function setStopFragmentIdentifier(index){window.frames[getViewer().iframename].location=this.origIFrameLocation+"#stopphoto="+index;checkStartFragmentIdentifier();}
function setStartFragmentIdentifier(index){var rootWin=getRootWindow();if(this.origIFrameLocation==undefined)
this.origIFrameLocation=rootWin.location.href.substring(0,rootWin.location.href.indexOf("#"));if(this.origRootLocation==undefined)
this.origRootLocation=rootWin.location.href.substring(rootWin.location.href.indexOf("#")+1);this.checkStopFragmentIdentifier();var frIdentifier="#startphoto="+index;rootWin.parent.location=this.origRootLocation+frIdentifier;}
function checkStopFragmentIdentifier(){var href=getRootWindow().location.href;if(href.indexOf("#stopphoto")==-1){window.setTimeout(checkStopFragmentIdentifier,500);}else{var viewer=getViewer();var index=href.substring(href.lastIndexOf("=")+1);if(viewer.origIFrameLocation.indexOf("#")==-1)
viewer.origIFrameLocation+="#";if(FIREFOX){window.history.back();}else{getRootWindow().location.href=viewer.origIFrameLocation;}
viewerCloseCallback(index);}}
function ToolbarAnimator(viewer){this.viewer=viewer;}
ToolbarAnimator.prototype.initialize=function(){var _this=this;var backDiv=findDOMElement(VIEWER_ID_BACK);var frontDiv=findDOMElement(VIEWER_ID_PHOTO);var toolbar=findDOMElement(VIEWER_ID_TOOLBAR);if(backDiv!=undefined&&frontDiv!=undefined&&toolbar!=undefined){var func=function(){_this.mouseAction();};backDiv.onmousemove=func;frontDiv.onmousemove=func;toolbar.onmousemove=func;toolbar.onclick=func;this.initialized=true;}};ToolbarAnimator.prototype.reset=function(){this.stop();var backDiv=findDOMElement(VIEWER_ID_BACK);var frontDiv=findDOMElement(VIEWER_ID_PHOTO);var toolbar=findDOMElement(VIEWER_ID_TOOLBAR);if(backDiv!=undefined&&frontDiv!=undefined&&toolbar!=undefined){backDiv.onmousemove=null;frontDiv.onmousemove=null;toolbar.onmousemove=null;toolbar.onclick=null;}
this.initialized=false;};ToolbarAnimator.prototype.stop=function(){var _this=this;if(this.hiderID!=undefined){window.clearTimeout(this.hiderID);this.hiderID=undefined;}
if(this.hidden){this.showToolbar();}};ToolbarAnimator.prototype.mouseAction=function(){this.stop();};ToolbarAnimator.prototype.slideshowAction=function(){var _this=this;if(this.viewer.slideShowRunning&&!this.viewer.slideShowPaused&&this.hiderID==undefined){if(!this.initialized){this.initialize();}
this.hiderID=window.setTimeout(function(){_this.hideToolbar();},5000);}else if(this.viewer.slideShowPaused){this.reset();}};ToolbarAnimator.prototype.hideToolbar=function(){var _this=this;var toolbar=findDOMElement(VIEWER_ID_TOOLBAR);if(toolbar==undefined){return;}
var opacity=toolbar.style.KhtmlOpacity;if(opacity==undefined){opacity=toolbar.style.opacity;}
if(opacity===0){toolbar.style.display="none";return;}
opacity=opacity-0.05;setOpacity(toolbar,opacity>0?opacity:0);this.hidden=true;this.hiderID=window.setTimeout(function(){_this.hideToolbar();},100);};ToolbarAnimator.prototype.showToolbar=function(){var toolbar=findDOMElement(VIEWER_ID_TOOLBAR);if(toolbar!=undefined){toolbar.style.display="block";setOpacity(toolbar,TOOLBAR_OPACITY);}
this.hidden=false;};