/**
 
	Selene, Westico)) RTLS Client
	****
	Selene.js

	Copyright 2009 BARCO, s.r.o. (http://barco.cz)
	Web browser client under development by Petr Vostřel (http://pisi.cz)

	Works great with OpenLayers 2.7 (http://openlayers.org)
	Utilizes mighty jQuery 1.2.6 (http://jquery.com)

*/

SELENE_STUFFED=true;var SELENE_CONFIG={language_code:"en",application_name:"codename Seléné",url:{search:"http://rest.westico.com/RTLS/rest/search",detail:"http://rest.westico.com/RTLS/rest/detail",path:"http://rest.westico.com/RTLS/rest/path",browse:"http://rest.westico.com/RTLS/rest/browse",admin:"http://rest.westico.com/Admin/structure"},max_timeout:30000,connection_retry_delays:[10,30,60,90,120,],results_per_page:10,map:{longitude:1945590.496350,latitude:6285690.336256,layer:0,floor:0,zoom:0,zooms:[{level:3,bounds:"world",layer:"road",map:"road",sat:true},{level:7,bounds:"world",layer:"road",map:"road",sat:true},{level:10,bounds:"city",layer:"road",map:"road",sat:true},{level:13,bounds:"city",layer:"road",map:"road",sat:true},{level:18,bounds:"premises",layer:"road",map:"road",sat:true},{level:20,bounds:"premises",layer:"rtls",map:"rtls",sat:false},{level:21,bounds:"premises",layer:"rtls",map:"rtls",sat:false},{level:22,bounds:"premises",layer:"rtls",map:"rtls",sat:false}],rtls_min_zoom:5,search_zoom:4,bounds:{world:[-20037508,20037508,20037508,-20037508],city:[1940213,6289588,1948903,6282763],area:[1944389,6286851,1946788,6284548],premises:[1945537,6285727,1945655,6285645],},bubble:{width:346,height:300},tile_size:256,shift_multiplier:3,hint_delay:1000,initial_mode:"map"},marker:{tag:{size:[26,22],offset:[-15,-21]},node:{size:[26,22],offset:[-15,-21]},},updater:{interval:0,options:[0,3,6,11,15,30,45,60,120,180,300,600,900,1200,1800,3600]}};var $$;(function(){LOG_LEVEL=2;log=function(what,addition,alternative){if(!LOG_LEVEL)return(alternative!=undefined)?alternative:what;try{if(addition==undefined){console.log('Selene ',what);}else{if(LOG_LEVEL==2)console.log('Selene.'+addition+':',what);}}catch(e){}
return(alternative!=undefined)?alternative:what;}
_log=function(what,addition){if(LOG_LEVEL==3)alert(what);else console.log(what,addition);}
Self=Selene={CLIENT:"Seléné",VERSION:"source",MODULE:"Selene",MODULES:['Native','Native/cs-CZ','Native/en','Base','Data','Data/Load','UI','UI/Key','UI/Mouse','UI/Popup','UI/Search','UI/Updater','UI/Path','Map','Map/Control','Map/Layer','Map/Vector','History','UI/Admin',],Current:undefined,initialize:function(){log(Self,"»»»");var delay=0;var i=0;$.each(Self.MODULES,function(ix,it){i++;var split=it.split("/");if(split.length==1)var module=Self[it]
else var module=Self[split[0]][split[1]];if(module)if(module.MODULE)setTimeout(function(){log(module.initialize(),"» "+i+" »»»");},delay=i*100);});setTimeout(function(){$("#Starter .List").append('<li>'+Self.Native.phrase("DoneLoading")+'</li>');},delay+20);return Self;},initialized:function(short_module,addition){$starter=$("#Starter");if($starter.find(".List").length==0){var $body=$("#Body");var $$=Self.Native.phrase;$starter.append($$("StartingPleaseWait")).append('<ul class="List">');}
$starter.find(".List").append('<li>'+Self.Native.phrase(short_module+'Initialized')+((addition)?' '+addition:'')+'</li>');},_load_module:function(module,cb){if(Self.STUFFED)return false;Self._loadings++;$.getScript('GUI/source/Selene/'+module+'.js',function(e){Self._loadings--;if(Self._loadings==0){Self.initialize();if($.isFunction(cb))cb();}});},_loadings:0,STUFFED:(typeof(SELENE_STUFFED)!="undefined")}
if(Self.STUFFED)return true;var jsfiles=Self.MODULES;var agent=navigator.userAgent;var docWrite=(agent.match("MSIE")||agent.match("Safari"));if(docWrite)var allScriptTags=new Array(jsfiles.length);var host="GUI/source/Selene/";var file;for(var i=0,len=jsfiles.length;i<len;i++){file=host+jsfiles[i]+".js";if(docWrite){allScriptTags[i]="<script src='"+file+"'></script>";}else{var s=document.createElement("script");s.src=file;var h=document.getElementsByTagName("head").length?document.getElementsByTagName("head")[0]:document.body;h.appendChild(s);}}
if(docWrite)document.write(allScriptTags.join(""));})();Selene.Native={MODULE:"Selene.Native",_code:undefined,code:function(code){if(code==undefined)return Self.Native._code;if(Self.Native[code]==undefined)return false;log(code,"TOCOOKIE")
if(code==Self.Native.code())return true;$.cookie("language",code);return Self.Native._code=code;},recall_code:function(){var last=log($.cookie("language"),"COOKIE");if(log(typeof(last))!=="string")return Self.Native.reset_code();return last;},reset_code:function(){return Self.Native.code(SELENE_CONFIG.language_code);},initialize:function(){var code=log(Self.Native.recall_code(),"CODE");Self.Native.code(code);$$=Self.Native.phrase;Self.initialized("Native","("+code+")");return Self.Native;},codes:[],register:function(code){if(!code)return false;if($.inArray(code,Self.Native.codes)!=-1)return false;Self.Native.codes.push(code);return code;},phrase:function(id,code){var dictionary=Self.Native.dictionary(code);if(!dictionary)return id;var phrase=dictionary[id];if(!phrase)return id;return phrase;},plural:function(number,id,code){var dictionary=Self.Native.dictionary(code);if(!dictionary)return id;switch(Math.abs(number)){case 1:id+="-one";break;case 2:case 3:case 4:id+="-two";break;default:id+="-many";break;}
var phrase=dictionary[id];if(!phrase)return id;return phrase;},dictionary:function(code){if(!code)code=Self.Native.code();var dictionary=Self.Native[code];if(!dictionary)return false;return dictionary;}}
Selene.Native.register("en");Selene.Native["en"]={"LanguageName":"English","Language":"Language:","StartingPleaseWait":"Program is starting... <strong>Please, wait.</strong>","GoogleInitialized":"Establishing connection with Google™ servers","BaseInitialized":"Basic operations","NativeInitialized":"English local environment","DataInitialized":"Data module","HistoryInitialized":"History","MapInitialized":"Mapping engine","AdminInitialized":"Administrative interface","MouseWheelInitialized":"Mouse wheel support","SearchInitialized":"Search interface","UIInitialized":"Graphic user interface","DoneLoading":"Done!","SearchTitle":"Search","SearchFieldHint":"Enter what are you seeking. F.e.: bed, container, linet, volvo, skoda, fabia, chair, ...","SearchFieldDefault":"Search for...","SearchExampleHint":"Search queries examples","SearchExample":"f.e.","SearchExampleQueries":"bed, container, linet, volvo, skoda, fabia, chair, ...","SearchButton":"Search","Searching":"Searching...","SearchInSets":"In sets of","Results":"results","SelectionTitle":"<span>Search </span>in selection","SelectionInstructions":"Here you can browse the structure of tags. By selecting tag groups, you limit where to search.","TimeTitle":"<span>Search </span>in <span>certain </span>time","TimeInstructions":"Time related search criteria. Only tags active in given time range will be found.","TimeUnlimited":"Without limitation","TimeToday":"Today","TimeYesterday":"Yesterday","TimeRange":"Between dates...","TimeRangeHint":"Select or type in date or/and time","SystemTitle":"System","DeveloperToolsLinkHint":"Displays mouse coordinates, search query being sent, ...","DeveloperToolsLink":"Developer tools","ApplicationName":"Visibility System™","ClientVersion":"client version","CreationYear":"2009","CreatorURL":"http://www.westico.com","CreatorCompany":"Westico Technologies Inc.","Rights":"All rights reserved","UpdaterHint":"Automatic update indication","MapZoom":"Zoom","MapZoomHint":"Map zooming controls","MapPan":"Panning","MapPanHint":"Map panning controls","MapLevel":"Level","MapLevelHint":"Map level controls","LayerMap":"Map","LayerSatellite":"Satellite","ControlZoomInHint":"Zoom In [Ctrl + Right Arrow keys]","ControlZoomOutHint":"Zoom Out [Ctrl + Left Arrow keys]","ControlPanNorthHint":"Pan North [Up Arrow key]","ControlPanEastHint":"Pan East [Right Arrow key]","ControlPanSouthHint":"Pan South [Down Arrow key]","ControlPanWestHint":"Pan West [Left Arrow key]","ControlLevelUp":"Move Floor Up [Ctrl + Up Arrow keys]","ControlLevelDown":"Move Floor Down [Ctrl + Down Arrow keys]","NotFound":"Nothing found...","NotFoundInstructions":"Try again to better describe what you seek.","ResultSetsHint":"To view the rest of sets use paging controls on the end of the list.","ResultsDisplaingSet":"Displaing Set","PathTriggerHint":"Show Tag Movement History in Map","PathTrigger":"Show Tag Movement","TagPositionHint":"Tag Position","NextSet":"Next results set »","NextSetHint":"View next page of results","PreviousSet":"« Previous","PreviousSetHint":"View previous page of results","ResultsSet":"Set:","ActualSetHint":"Set Being Displayed","ResultsSetX":"Set","TagDetailDateFormat":"dddd, MMMM d, yyyy H:mm","ParentLocation":"Parent location","FloorX":"floor","Location":"Location","LastSeenHint":"Last contact of the tag","TagPath":"Tag path:","ServerReportedError":"Server reported","ServerPermanentError":"serious","ServerErrorDetails":"error. Show details?","MapRoad":"Road Map","MapSatellite":"Satellite Image","VectorOverlay":"Vector Overlay","MouseCursor":"Mouse cursor","Longitude":"longitude","Latitude":"latitude","GuessTimeFormat":"yyyy-MM-ddThh:mm","SelectionAddTo":"Add to selection","Loading":"Loading...","LoadingStopped":"Oh no,","LoadingStoppedNextTryIn":"loading of content failed... Next try in","Seconds":"seconds","LoadingStoppedPermanently":"Problem. Repeated attempts to load the content have failed. Check your Internet connection.","BrowserEdit":"Edit","BrowserExpandHint":"Expand","BrowserSelectHint":"Select","BrowserRemoveHint":"Remove from selection","BrowserCollapseHint":"Collapse","YourSelection":"Your Selection","SelectionEmpty":"Selection is empty.","SelectionEmptyInstructions":"Browse the expandable list on the right and click to select group or groups to narrow your search.","SelectionCancel":"Cancel","SelectionCancelConfirm":"Whole Selection?","AutoUpdate":"Automatic update","AutoUpdateHint":"Perform Update Now","UpdateInterval-0":"is OFF","UpdateInterval-3":"every 2 sec (intensive)","UpdateInterval-6":"every 5 sec","UpdateInterval-11":"every 10 sec","UpdateInterval-15":"every 15 sec","UpdateInterval-30":"every half minute","UpdateInterval-45":"every 45 sec","UpdateInterval-60":"every minute","UpdateInterval-120":"every 2 min","UpdateInterval-180":"every 3 min","UpdateInterval-300":"every 5 min","UpdateInterval-600":"every 10 min","UpdateInterval-900":"every quarter hour","UpdateInterval-1200":"every 20 min","UpdateInterval-1800":"every half hour","UpdateInterval-3600":"every hour","DirectZoom0":"World map","DirectZoom1":"Highway map","DirectZoom2":"Road map","DirectZoom3":"Local road map (low detail)","DirectZoom4":"Local road map (high detail)","DirectZoom5":"Building map (low detail)","DirectZoom6":"Building map (medium detail)","DirectZoom7":"Building map (high detail)","BatterySensor":"Battery level","TemperatureSensor":"Ambient temperature","SignalSensor":"Signal level","ChannelSensor":"Channel","ApMacAddressSensor":"HW (mac) address","TagsMatches-one":"tag matching your search","TagsMatches-two":"tags matching your search","TagsMatches-many":"tags matching your search"}
Selene.Native.register("cs-CZ");Selene.Native["cs-CZ"]={"LanguageName":"Čeština","Language":"Jazyk:","StartingPleaseWait":"Program startuje... <strong>Počkejte, prosím.</strong>","GoogleInitialized":"Navázání kontaktu se servery Google™","BaseInitialized":"Základní operace","NativeInitialized":"České národní prostředí","DataInitialized":"Datový modul","HistoryInitialized":"Historie","MapInitialized":"Mapový engine","AdminInitialized":"Administrační rozhraní","MouseWheelInitialized":"Podpora pro kolečko myši","SearchInitialized":"Rozhraní vyhledávání","UIInitialized":"Grafické uživatelské prostředí","DoneLoading":"Hotovo!","SearchTitle":"Vyhledávání","SearchFieldHint":"Napište, co hledáte. Například:bed, container, linet, volvo, skoda, fabia, chair","SearchFieldDefault":"Hledám...","SearchExampleHint":"Příklady vyhledávacího zadání","SearchExample":"například","SearchExampleQueries":"bed, container, linet, volvo, skoda, fabia, chair, ...","SearchButton":"Hledat","Searching":"Hledám...","SearchInSets":"V sadách po","Results":"výsledcích","SelectionTitle":"<span>Hledat </span>ve výběru","SelectionInstructions":"Zde je možné ručně procházet strukturou tagů. Výběrem konkrétních skupin vymezíte oblast hledání.","TimeTitle":"<span>Hledat </span>v <span>určitém </span>čase","TimeInstructions":"Časové omezení vyhledávaní. Budou nalezeny pouze tagy s aktivitou v daném časovém rozmezí.","TimeUnlimited":"Bez omezení","TimeToday":"Dnes","TimeYesterday":"Včera","TimeRange":"V rozmezí...","TimeRangeHint":"Vyberte nebo zapište datum a nebo čas","SystemTitle":"System","DeveloperToolsLinkHint":"Zobrazuje souřadnice myši, odesílané query, ...","DeveloperToolsLink":"Pomůcky pro vývojáře","ApplicationName":"Visibility System™","ClientVersion":"verze klienta","CreationYear":"2009","CreatorURL":"http://www.westico.com","CreatorCompany":"Westico Technologies a.s.","Rights":"Všechna práva vyhrazena","UpdaterHint":"Indikátor automatické aktualizace","MapZoom":"Přiblížení","MapZoomHint":"Ovládání změny měřítka mapy","MapPan":"Posun","MapPanHint":"Ovládání posuvu mapy","MapLevel":"Patro","MapLevelHint":"Změna zobrazeného patra","LayerMap":"Mapa","LayerSatellite":"Satelit","ControlZoomInHint":"Přiblížit zobrazení [klávesy Ctrl a šipka doprava]","ControlZoomOutHint":"Oddálit zobrazení [klávesy Ctrl a šipka doleva]","ControlPanNorthHint":"Více na sever [klávesa šipka nahoru]","ControlPanEastHint":"Více na východ [klávesa šipka doprava]","ControlPanSouthHint":"Více na jih [klávesa šipka dolů]","ControlPanWestHint":"Více na západ [klávesa šipka doleva]","ControlLevelUp":"O patro výš [klávesy Ctrl a šipka nahorů]","ControlLevelDown":"O patro níž [klávesy Ctrl a šipka dolů]","NotFound":"Nenalezeno...","NotFoundInstructions":"Zkuste lépe specifikovat, co hledáte.","ResultSetsHint":"K zobrazení jiné sady použijte stránkování pod seznamem","ResultsDisplaingSet":"Zobrazena sada","PathTriggerHint":"Ukázat v mapě historii pohybu tagu","PathTrigger":"Ukázat historii pohybu tagu","TagPositionHint":"Pozice tagu","NextSet":"Další sada výsledků »","NextSetHint":"Následující sada výsledků","PreviousSet":"« Předešlá","PreviousSetHint":"Předchozí sada výsledků","ResultsSet":"Sada:","ActualSetHint":"Právě zobrazená sada výsledků","ResultsSetX":"Sada","TagDetailDateFormat":"dddd d. MMMM yyyy H:mm","ParentLocation":"Nadřazená lokace","FloorX":"patro","Location":"Lokace","LastSeenHint":"Poslední kontakt tagu","TagPath":"Cesta tagu:","ServerReportedError":"Server oznámil","ServerPermanentError":"závažnou","ServerErrorDetails":"chybu. Ukázat detaily?","MapRoad":"Silniční mapa","MapSatellite":"Satelitní snímek","VectorOverlay":"Vektorový překryv","MouseCursor":"Kurzor myši","Longitude":"délka","Latitude":"šířka","GuessTimeFormat":"yyyy-MM-ddThh:mm","SelectionAddTo":"Přidat do výběru","Loading":"Načítám...","LoadingStopped":"Ajaj,","LoadingStoppedNextTryIn":"Načítání obsahu selhalo... Další pokus za","Seconds":"sekund","LoadingStoppedPermanently":"Problém. Opakované pokusy o načtení obsahu selhaly. Zkontrolujte zda je vaše připojení k internetu funkční.","BrowserEdit":"Upravit","BrowserExpandHint":"Rozbalit","BrowserSelectHint":"Vybrat","BrowserRemoveHint":"Odebrat z výběru","BrowserCollapseHint":"Sbalit","SelectionEmpty":"Výběr je prázdný.","SelectionEmptyInstructions":"Z nabídky napravo kliknutím vyberte skupinu nebo několik skupin, na něž chcete své hledání zaměřit.","YourSelection":"Váš výběr","SelectionCancel":"Zrušit","SelectionCancelConfirm":"celý výběr?","AutoUpdate":"Automatická aktualizace poloh","AutoUpdateHint":"Aktualizovat hned","UpdateInterval-0":"je vypnuta","UpdateInterval-3":"po 2s (náročné)","UpdateInterval-6":"po 5s","UpdateInterval-11":"po 10s","UpdateInterval-15":"po 15s","UpdateInterval-30":"po půl minutě","UpdateInterval-45":"po 45s","UpdateInterval-60":"po minutě","UpdateInterval-120":"po 2m","UpdateInterval-180":"po 3m","UpdateInterval-300":"po 5m","UpdateInterval-600":"po 10m","UpdateInterval-900":"po čtvrt hodině","UpdateInterval-1200":"po 20m","UpdateInterval-1800":"po půl hodině","UpdateInterval-3600":"po hodině","DirectZoom0":"Mapa států světa","DirectZoom1":"Dálniční mapa","DirectZoom2":"Silniční mapa","DirectZoom3":"Místní silniční mapa (nízký detail)","DirectZoom4":"Místní silniční mapa (vysoký detail)","DirectZoom5":"Mapa budovy (nízký detail)","DirectZoom6":"Mapa budovy (střední detail)","DirectZoom7":"Mapa budovy (vysoký detail)","BatterySensor":"Stav baterie","TemperatureSensor":"Okolní teplota","SignalSensor":"Úroveň signálu","ChannelSensor":"Kanál","ApMacAddressSensor":"HW (mac) adresa","TagsMatches-one":"tag odpovídá zadání","TagsMatches-two":"tagy odpovídají zadání","TagsMatches-many":"tagů odpovídá zadání"}
Selene.Base={MODULE:"Selene.Base",initialize:function(){Self.initialized("Base");Self.Current=SELENE_CONFIG;$(window).unload(Self.Base._unload);return Self.Base;},_unload:function(){Self.UI.start_loading();Self.UI._unload()
try{log("Unloading Google API");GUnload();}catch(e){log("Failed trying to use Google's unload method");};if(Self.UI.Updater.object)Self.UI.Updater.object.stop();log('OK','_unload');return;},marker_by_index:function(index){var found=undefined;$.each(Self.Map.Layer.tags.markers,function(ix,it){if(index==it.index){found=ix;return false;}});if(found==undefined)return log("No match for marker."+index,"marker_by_index",false);return Self.Map.Layer.tags.markers[found];},marker_by_id:function(id){var found=undefined;$.each(Self.Map.Layer.tags.markers,function(ix,it){if(id==it.tag){found=ix;return false;}});if(found==undefined)return log("No match for marker#"+id,"marker_by_id",false);return Self.Map.Layer.tags.markers[found];},node_marker_by_id_and_index:function(id,index){var found=undefined;$.each(Self.Map.Layer.nodes.markers,function(ix,it){if(id==it.tag&&index==it.index){found=ix;return false;}});if(found==undefined)return log("No match for node marker#"+id,"node_marker_by_id_and_index",false);return Self.Map.Layer.nodes.markers[found];},order_by_latitude:function(arr){arr.sort(function(a,b){x=Self.Data.position(a.position.position).latitude;y=Self.Data.position(b.position.position).latitude;if(x==y)return(a.label>b.label)?-1:1;return(x>y)?-1:1;});return arr;},order_by_label:function(arr){arr.sort(function(a,b){var a=a.label;var b=b.label;var na=Self.Base.numerize(a);var nb=Self.Base.numerize(b);if(a==na)a=na;if(b==nb)b=nb;if(a==b)return 0;return(a>b)?1:-1;});return arr;},order_by_floor:function(arr){arr.sort(function(a,b){a=a.floor;b=b.floor;if(a==b)return 0;return(a>b)?1:-1;});return arr;},numerize:function(string){var keep="";$.each(string,function(ix,it){if(it-0==it)keep+=it;});return keep-0;},camelize:function(string){string.replace(/[-_]([a-z])/ig,function(z,b){return b.toUpperCase();});return string;},pluralize:function(string){return string+"s";}}
Selene.Data={MODULE:"Selene.Data",initialize:function(){Self.initialized("Data");$.each(Self.Data._store,function(plural,it){var singular=plural.slice(0,-1);var store=Self.Data._store[plural];Self.Data[plural]=function(){return store;};Self.Data[singular]=function(id){if(!store[id])return log("No match for id#"+id,"Data."+singular,false);var output=store[id];switch(singular){case"tag_detail":break;}
return store[id];};});return Self.Data;},_store:{servers:{},layers:{},results:{},tags:{},tag_details:{},tag_paths:{},positions:{},locations:{},eventconfigs:{},members:{},groups:{}},show:{tags:[],tag_details:[],tag_paths:[],members:[],browser_tags:[],browser_groups:[]},eventconfig:function(id){},eventconfigs:function(){},group:function(id){},groups:function(){},layer:function(id){},layers:function(){},location:function(id){},locations:function(){},member:function(id){},members:function(){},position:function(id){},positions:function(){},result:function(id){},results:function(){},server:function(id){},servers:function(){},tag:function(id){},tags:function(){},tag_detail:function(id){},tag_details:function(){},tag_path:function(id){},tag_paths:function(){},layer_by_floor:function(floor){var store=Self.Data.layers();var found=undefined;$.each(store,function(ix,it){if(floor==it.floor){found=ix;return false;}});if(found==undefined)return log("No match for floor#"+floor,"layer_by_floor",false);return store[found];},ground_layer:function(){var store=Self.Data.layers();var found=undefined;$.each(store,function(ix,it){if(it.floor==0){found=ix;return false;}});return store[found];},layer_ids_by_floor:function(){var store=Self.Data.layers();var elements=[];var ids=[];$.each(store,function(id,layer){elements.push({id:id,floor:layer.floor});});$.each(Self.Base.order_by_floor(elements),function(ix,it){ids.push(it.id);});return ids;},tag_ids_by_label:function(){var elements=[];var ids=[];$.each(Self.Data.show.tags,function(ix,it){var tag=Self.Data.tag(it);elements.push({id:tag.id,label:tag.label});});$.each(Self.Base.order_by_label(elements),function(ix,it){ids.push(it.id);});return ids;},tag_ids_by_latitude:function(){var elements=[];var ids=[];$.each(Self.Data.show.tags,function(ix,it){var tag=Self.Data.tag(it);elements.push({id:tag.id,position:tag.position,label:tag.label});});$.each(Self.Base.order_by_latitude(elements),function(ix,it){ids.push(it.id);});return ids;}}
Selene.Map={MODULE:"Selene.Map",object:undefined,PROJECTION:new OpenLayers.Projection("EPSG:900913"),GEO_PROJECTION:new OpenLayers.Projection("EPSG:4326"),bounds:function(id){var bounds=Self.Current.map.bounds[id];if(!bounds)return false;return new OpenLayers.Bounds(bounds[0],bounds[3],bounds[2],bounds[1]);},mode:function(mode){if(mode!=undefined){log(Self.Map.object.setBaseLayer(log(Self.Map.Layer[mode]())));Self.Map._mode=mode;if(mode=="satellite"){var zoom_index=Self.Current.map.zoom;while(!log(Self.Map.zoom_by_index(zoom_index).sat,"SAT")){zoom_index--;}
if(zoom_index!=Self.Current.map.zoom){Self.Map.Control.zoom(log(zoom_index));}}
var $body=$("#Body");var cls="Mode"+$.string(mode).capitalize().str;$body.removeClass("ModeSatellite").removeClass("ModeMap").addClass(cls);Self.Map.floorize_markers();return mode;}
return Self.Map._mode;},_mode:undefined,initialize:function(){Self.initialized("Map");OpenLayers.IMAGE_RELOAD_ATTEMPTS=3;OpenLayers.Util.onImageLoadErrorColor="transparent";Self.Map.object=log(new OpenLayers.Map('Map',{numZoomLevels:26,tileSize:new OpenLayers.Size(Self.Current.map.tile_size,Self.Current.map.tile_size),maxExtent:Self.Map.bounds("world"),maxResolution:156543.0339,controls:[new OpenLayers.Control.ScaleLine(),new OpenLayers.Control.Navigation({zoomWheelEnabled:false}),],theme:null,paddingForPopups:new OpenLayers.Bounds(50,100,50,50),projection:"EPSG:900913",resolutions:[156543.0339,78271.51695,39135.758475,19567.8792375,9783.93961875,4891.969809375,2445.9849046875,1222.99245234375,611.496226171875,305.7481130859375,152.87405654296876,76.43702827148438,38.21851413574219,19.109257067871095,9.554628533935547,4.777314266967774,2.388657133483887,1.1943285667419434,0.5971642833709717,0.29858214168548586,0.14929107084274293,0.07464553542137146,0.03732276771068573,0.018661383855342866,0.009330691927671433,0.0046653459638357165,],units:"m",center:new OpenLayers.LonLat(Self.Current.map.longitude,Self.Current.map.latitude)}),"» Map");Self.Map.object.events.register('addlayer',Self,Self.Map.Layer._add_hook);Self.Map.Layer.add_road();Self.Map.Layer.add_satellite();Self.Map.Layer.add_vector();$.each(Self.Current.marker,function(ix,marker){marker.size=new OpenLayers.Size(marker.size[0],marker.size[1]);marker.offset=new OpenLayers.Pixel(marker.offset[0],marker.offset[1]);});Self.Map.Layer.tags=log(new OpenLayers.Layer.Markers('Tags'),'» Markers');Self.Map.object.addLayer(Self.Map.Layer.tags);Self.Map.Layer.nodes=log(new OpenLayers.Layer.Markers('Nodes'),'» Path nodes');Self.Map.object.addLayer(Self.Map.Layer.nodes);Self.Map.object.events.register('movestart',Self,Self.UI.Mouse.Wheel.disable);Self.Map.object.events.register('moveend',Self,Self.UI.Mouse.Wheel.enable);Self.Map.object.events.register('moveend',Self,Self.UI.update_list);Self.Map.object.events.register('moveend',Self,Self.Map.on_move_end)
Self.Map.object.events.register('click',Self,Self.UI.Mouse.click_map);Self.Map.object.events.register('mousemove',Self,Self.UI.Mouse.on_map);Self.Map.object.events.register('mouseout',Self,Self.UI.Mouse.out_map);Self.Map.object.events.register('zoomend',Self,Self.Map.on_zoom);Self.UI.Mouse.Wheel.initialize();var zoom=Self.Current.map.zoom;Self.Current.map.zoom=undefined;Self.Map.Control.zoom(zoom);Self.Map.mode(Self.Current.map.initial_mode);while(Self.Map.object.events.listeners.dblclick.length>0)Self.Map.object.events.listeners.dblclick.pop();return Self.Map;},_last_url_id:0,server_url:function(id){if(!id){Self.Map._last_url_id++;if(!Self.Data.servers()[Self.Map._last_url_id])Self.Map._last_url_id=1;id=Self.Map._last_url_id;}
var server=Self.Data.server(id);return server.url;},get_multiplier:function(shiftKey){return(shiftKey)?Self.Current.map.shift_multiplier:1;},floorize_markers:function(force){var layer=(Self.Current.map.zoom>=Self.Current.map.rtls_min_zoom)?Self.Current.map.layer:false;var mode=log(Self.Map.mode(),"******");var floorize=false;if(!force&&layer==Self.Map._floorized_for)return false;if(mode=="satellite"){}else{if(!force&&Self.Current.map.zoom!=undefined){var zoom=log(Self.Map.zoom_by_index(Self.Current.map.zoom));if(log(zoom.map)=="rtls")floorize=true;}}
log(floorize,"**************")
Self.Map._floorized_for=layer;$("#MapApp .Marker").removeClass("OtherFloor");if(!layer){Self.UI.Path.floorize(false);return false;}
if(!floorize)return false;log("floorize")
$("#MapApp .Marker").addClass("OtherFloor").filter("[floor="+layer+"]").removeClass("OtherFloor");$("#MapApp #Controls .DirectFloor.Selected").removeClass("Selected");$("#MapApp #Controls .DirectFloor[floor="+layer+"]").addClass("Selected");Self.UI.Path.floorize(layer);return true;},_floorized_for:undefined,on_move_end:function(){Self.Current.map.longitude=Self.Map.object.center.lon;Self.Current.map.latitude=Self.Map.object.center.lat;$("#MapApp #Pan").removeClass("WestPan").removeClass("NorthPan").removeClass("SouthPan").removeClass("EastPan");},on_zoom:function(e){setTimeout(function(){$("#MapApp #Zoom").removeClass("InZoom").removeClass("OutZoom");},600);},on_floor:function(e){setTimeout(function(){$("#MapApp #Floor").removeClass("DownFloor").removeClass("UpFloor");},600);},render_tags:function(){log(Self.Map.Layer.tags,"» Render tags");Self.Map.Layer.tags.clearMarkers();$.each(Self.Data.tag_ids_by_latitude(),function(ix,it){var tag=Self.Data.tag(it);var position=Self.Data.position(tag.position.position);var layer=Self.Data.layer(position.layer);Self.Map.Layer.tags.addMarker(Self.Map.new_tag_marker(new OpenLayers.LonLat(position.longitude,position.latitude),tag.label,tag.index,layer,tag));return true;});return Self.Map.Layer.tags;},tag_marker_icon:function(){var icon=new OpenLayers.Icon('GUI/images/void.gif',Self.Current.marker.tag.size,Self.Current.marker.tag.offset);return icon;},node_marker_icon:function(){var icon=new OpenLayers.Icon('GUI/images/void.gif',Self.Current.marker.node.size,Self.Current.marker.node.offset);return icon;},new_tag_marker:function(position,label,index,layer,tag){var marker=new OpenLayers.Marker(position,Self.Map.tag_marker_icon());marker.LABEL=label;marker.index=index;marker.tag=tag.id;var last_id=(Self.UI.Mouse._last_click_marker!=undefined)?Self.UI.Mouse._last_click_marker.attr("tag"):undefined;$(marker.icon.imageDiv).addClass((tag.id==last_id)?'Marker Selected':'Marker').attr('index',index).attr('tag',tag.id).append('<div class="TagMarkerLabel">'+label+'</div>').children('.TagMarkerLabel').mouseover(function(e){e.stopPropagation();Self.UI.Mouse.enter_marker($(this).parent());}).mouseout(function(e){e.stopPropagation();Self.UI.Mouse.exit_marker($(this).parent());}).click(function(e){e.stopPropagation();Self.UI.Mouse.click_tag_marker($(this).parent());});if(!layer)return marker;$(marker.icon.imageDiv).attr('floor',layer.id);return marker;},new_node_marker:function(position,label,index,layer,tag){var lonlat=new OpenLayers.LonLat(position.longitude,position.latitude)
var marker=new OpenLayers.Marker(lonlat,Self.Map.node_marker_icon());marker.index=index;marker.tag=tag.id;$(marker.icon.imageDiv).addClass('Node').attr('index',index).attr('tag',tag.id).attr('floor',layer.id).click(function(e){e.stopPropagation();Self.UI.Mouse.click_node_marker($(this));});return marker;},zoom_by_index:function(index){var found=undefined;$.each(Self.Current.map.zooms,function(ix,it){if(index==it.index){found=ix;return false;}});if(found==undefined)return log("No match for zoom."+index,"zoom_by_index",false);return Self.Current.map.zooms[found];},zoom_by_level:function(level){var found=undefined;$.each(Self.Current.map.zooms,function(ix,it){if(level==it.level){found=ix;return false;}});if(found==undefined)return log("No match for zoom."+index,"zoom_by_level",false);return Self.Current.map.zooms[found];}}
Selene.UI={MODULE:"Selene.UI",labels:'A B C D E F G H I J K L M N O P Q R S T U V W X Y Z',colors:[],color:{aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},initialize:function(){Self.initialized("UI");$.each(Self.UI.color,function(ix,it){var sum=it[0]+it[1]+it[2];if(sum<450)Self.UI.colors.push(ix);});Self.UI.colors.reverse();var $body=$("#Body");$body.append('<div id="SearchInterface">').find("#SearchInterface").append('<form action="search" method="post" id="SearchForm">').find('form').append('<div class="SearchOption" id="Search">').find("#Search").append('<h2 class="Title">'+$$("SearchTitle")+'</h2>').append('<div class="Field" title="'+$$("SearchFieldHint")+'"><input class="textfield" name="query" type="text" value="" default="'+$$("SearchFieldDefault")+'"></div>').append('<div class="Example" title="'+$$("SearchExampleHint")+'">').find(".Example").append('<em>'+$$("SearchExample")+'</em> ').append('<strong>'+$$("SearchExampleQueries")+'</strong>').end().append('<input class="submit" type="submit" value="'+$$("SearchButton")+'">').append('<div class="Progress">'+$$("Searching")+'</div>').end().append('<div class="SearchOption" id="Query">').find("#Query").append('<div class="Panel">').find(".Panel").append('<p class="PerView">').find(".PerView").append($$("SearchInSets")+' ').append('<select class="Number">').find("select").append('<option value="10">10</option>').append('<option value="20">20</option>').append('<option value="50">50</option>').append('<option value="100">100</option>').end().append(' '+$$("Results")).end().end().end().append('<div class="SearchOption" id="Selection">').find("#Selection").append('<h3 class="Title"><span class="Icon"></span>'+$$("SelectionTitle")+'</h3>').end().append('<div class="SearchPanel" id="SelectionOption">').find("#SelectionOption").append('<p class="Instructions">').find(".Instructions").append($$("SelectionInstructions")).end().append('<div id="Selected">').find("#Selected").append('<div class="Trigger">').append('<div class="List">').end().append('<div id="Browser">').find("#Browser").append('<div class="Parents">').append('<div class="Members">').end().end().append('<div class="SearchOption" id="Time">').find("#Time").append('<h3 class="Title"><span class="Icon"></span>'+$$("TimeTitle")+'</h3>').end().append('<div class="SearchPanel" id="TimeOption">').find("#TimeOption").append('<p class="Instructions">').find(".Instructions").append($$("TimeInstructions")).end().append('<div class="Settings">').find(".Settings").append('<select class="collect command Influential" collect="true" default="void" id="ChoiceTime1">').find("select").append('<option value="void">'+$$("TimeUnlimited")+'</option>').append('<option value="today">'+$$("TimeToday")+'</option>').append('<option value="yesterday">'+$$("TimeYesterday")+'</option>').append('<option value="range">'+$$("TimeRange")+'</option>').end().append('<div class="Subsettings Range">').find(".Subsettings").append('<input type="text" title="'+$$("TimeRangeHint")+'" class="TimeField collect param" value="" collect="true" id="ParamTimeRange">').append('<div id="TimeRange">').end().end().end().end().end().append('<div class="SearchOption" id="System">').find("#System").append('<h3 class="Title"><span>'+$$("SystemTitle")+'</span></h3>').end().append('<div class="SearchPanel" id="SystemOption">').find("#SystemOption").append('<div class="Links">').append('<div class="Signature">').find(".Links").append('<div class="Language">').find(".Language").append($$("Language")+' <select id="LanguageSelect">').end().append('<div class="DeveloperTools" title="'+$$("DeveloperToolsLinkHint")+'"><label for="DeveloperToolsSwitch">'+$$("DeveloperToolsLink")+'</label> <input type="checkbox" id="DeveloperToolsSwitch"></div>').end().find(".Signature").append('<div class="ApplicationName">'+$$("ApplicationName")+'</div>').append('<div class="Copyright">').append('<div class="ApplicationVersion">'+$$("ClientVersion")+' <span id="Version">'+Self.VERSION+'</span></div>').find(".Copyright").append('<div class="Year">© '+$$("CreationYear")+' </div>').append('<div class="Company"><a href="'+$$("CreatorURL")+'"><span>'+$$("CreatorCompany")+'</span></a> </div>').append('<div class="Rights">'+$$("Rights")+'</div>').end().end().end().append('<div id="AutoUpdate"></div>').append('<div id="AutoUpdateProgress" title="'+$$("UpdaterHint")+'"></div>').append('<input type="text" id="SearchQuery">').append('<div id="ListPane">').find("#ListPane").append('<div id="Results"></div>').append('<div id="List"></div>').append('<div id="ListPager"></div>').end().append('<div id="MapApp">').find("#MapApp").append('<div id="Map">').append('<div id="Controls">').append('<div id="ModeSwitch">').find("#Controls").append('<div id="Zoom"><span title="'+$$("MapZoomHint")+'">'+$$("MapZoom")+'</span></div>').append('<div id="Pan"><span title="'+$$("MapPanHint")+'">'+$$("MapPan")+'</span></div>').append('<div id="Floor"><span title="'+$$("MapLevelHint")+'">'+$$("MapLevel")+'</span></div>').end().end().append('<div id="Copyright"><strong>© '+$$("CreationYear")+' <a href="'+$$("CreatorURL")+'">'+$$("CreatorCompany")+'</a></strong></div>');var langs=[];var lang_change=function(){var $t=$(this);Self.Native.code($t.val());window.location.reload();}
var $langs=$("#LanguageSelect").change(lang_change);var lang=Self.Native.code();$.each(log(Self.Native.codes),function(ix,it){$langs.append('<option value="'+it+'"'+((it==lang)?" selected":"")+'>'+Self.Native[it]["LanguageName"]+'</option>')
langs.push()});$(document).keypress(Self.UI.Key.press);var date_str="yyyy-MM-ddThh:mm";$("#TimeRange").DatePicker({flat:true,mode:"range",calendars:3,current:Date.today(),format:"Y-m-d",date:[],onChange:function(formated){$('#ParamTimeRange').val('from:'+formated.join(' till:'));Self.UI.Search.update_save_query();Self.UI.Search.submit(true,function(){},function(){});}}).find(".datepicker").css({width:588,height:154}).find(".datepickerContainer").css({width:568,height:134});$("#ParamTimeRange").val('from:'+$("#TimeRange").DatePickerGetDate(true).join(' till:')).blur(function(){var t=$(this);var split=$(t.val().split(" "));var from,till;split.each(function(ix,it){itsplit=it.split(":");if(itsplit.length==2){var date=Date.parse(itsplit.slice(1).join(":"));switch(itsplit[0]){case'from':from=date;break;case'till':till=date;break;}}});var range=log([from,till]);$("#TimeRange").DatePickerSetDate(range,false);t.val("from:"+from.toString(date_str)+" till:"+till.toString(date_str));Self.UI.Search.update_save_query();});$.each(Self.Current.map.zooms,function(ix,it){it.index=ix;});Self.Current.map.zooms.reverse();$("#Map").dblclick(Self.UI.Mouse.double_click_map);$("#Controls").wrapInner('<div class="GUI"></div>');$("#Search .Field,#ListPane,.SearchPanel").wrapInner('<div class="GUI"><div class="GUI"></div></div>');$("#MapApp").append('<div id="ControlsHider"></div>').wrapInner('<div class="GUI"><div class="GUI"><div class="GUI"><div class="GUI"></div></div></div></div>');$("#Controls #Zoom, #Controls #Pan, #Controls #Floor").wrapInner('<div class="Title"></div>');$("#Controls #Pan").append('<div class="Arrowpad"></div>');$("body").append('<div class="Vendor"></div>');$("#Head").wrapInner('<div class="GUI"></div>');$("#ModeSwitch").append('<div>').find("div:last").addClass("Mode ModeMap").attr({_mode:"map"}).text($$("LayerMap")).end().append('<div>').find("div:last").addClass("Mode ModeSatellite").attr({_mode:"satellite"}).text($$("LayerSatellite")).end().find("div").wrapInner("<span>").click(Self.UI.Mouse.click_map_mode);Self.UI.Search.initialize();$("#Controls #Zoom").append('<div class="Arrowpad"></div>').append('<div class="Direct"></div>');$("#Controls #Zoom .Arrowpad").append('<div class="Control ZoomOut">').children('div:last').attr("title",$$("ControlZoomOutHint")).click(function(){Self.Map.Control.zoom_out();}).hover(function(){Self.UI.Mouse.hover_zoom(true,"In");},function(){Self.UI.Mouse.hover_zoom(false,"In");});$("#Controls #Zoom .Arrowpad").append('<div class="Control ZoomIn">').children('div:last').attr("title",$$("ControlZoomInHint")).click(function(){Self.Map.Control.zoom_in();}).hover(function(){Self.UI.Mouse.hover_zoom(true,"Out");},function(){Self.UI.Mouse.hover_zoom(false,"Out");});$.each(Self.Current.map.zooms,function(ix,zoom){$("#Controls #Zoom .Direct").append('<div>').children('div:last').attr("class","Control DirectZoom Zoom"+zoom.index).attr("title",Self.Native.phrase("DirectZoom"+zoom.index)).attr("index",zoom.index).html("<span>"+zoom.index+"</span>").click(function(it){Self.Map.Control.zoom(zoom.index);});});Self.Current.map.zooms.reverse();$("#Controls #Pan .Arrowpad").append('<div>').children('div:last').attr("class","Control PanNorth").attr("title",$$("ControlPanNorthHint")).click(function(e){Self.Map.Control.pan_north(Self.Map.get_multiplier(e.shiftKey));}).hover(function(){Self.UI.Mouse.hover_pan(true,"North");},function(){Self.UI.Mouse.hover_pan(false,"North");});$("#Controls #Pan .Arrowpad").append('<div>').children('div:last').attr("class","Control PanEast").attr("title",$$("ControlPanEastHint")).click(function(e){Self.Map.Control.pan_east(Self.Map.get_multiplier(e.shiftKey));}).hover(function(){Self.UI.Mouse.hover_pan(true,"East");},function(){Self.UI.Mouse.hover_pan(false,"East");});$("#Controls #Pan .Arrowpad").append('<div>').children('div:last').attr("class","Control PanSouth").attr("title",$$("ControlPanSouthHint")).click(function(e){Self.Map.Control.pan_south(Self.Map.get_multiplier(e.shiftKey));}).hover(function(){Self.UI.Mouse.hover_pan(true,"South");},function(){Self.UI.Mouse.hover_pan(false,"South");});$("#Controls #Pan .Arrowpad").append('<div>').children('div:last').attr("class","Control PanWest").attr("title",$$("ControlPanWestHint")).click(function(e){Self.Map.Control.pan_west(Self.Map.get_multiplier(e.shiftKey));}).hover(function(){Self.UI.Mouse.hover_pan(true,"West");},function(){Self.UI.Mouse.hover_pan(false,"West");});$(".SearchOption .Title, #Search .Field .GUI .GUI").click(function(e){Self.UI.Mouse.click_search_option(e);});$(".DeveloperTools input").change(Self.UI.Mouse.click_developer_tools_switch);$("#MapApp, #List").click(Self.UI.Mouse.click_map_app);Self.UI.Updater.render();Self.UI.tooltips();Self.UI.reveal();return Self.UI;},reveal:function(){$("#Starter").empty();$("#Body").removeClass("Starting");var preset=$("#Search .query").val();if(preset!=""){}else{}},tooltips:function(){$("[title]").tooltip({track:true,delay:900});},update:function(collect){var updated=[];if(collect)Self.UI.Search.skip_first=0;updated.push({id:"Updater",object:Self.UI.Updater.update(collect)});return updated;},start_loading:function(){Self.UI._loadings++;Self.UI.update_loading();return Self.UI._loadings;},stop_loading:function(){Self.UI._loadings--;if(Self.UI._loadings<0)Self.UI._loadings=0;Self.UI.update_loading();},_loadings:0,update_loading:function(){if(Self.UI._loadings==0)$("body").removeClass("Loading")
else $("body").addClass("Loading");return Self.UI._loadings;},update_list:function(e){var cls;var onScreen=0;var offScreen=0;$('#List tr > .Marker').removeClass('OnScreen').removeClass('NWfromScreen').removeClass('SWfromScreen').removeClass('NEfromScreen').removeClass('SEfromScreen');$.each(Self.Map.Layer.tags.markers,function(ix,it){cls='';if(it.onScreen()){onScreen++;cls='OnScreen';}else{offScreen++;if(it.map){if(it.lonlat.lat>it.map.center.lat)cls+='N';if(it.lonlat.lat<it.map.center.lat)cls+='S';if(it.lonlat.lon>it.map.center.lon)cls+='E';if(it.lonlat.lon<it.map.center.lon)cls+='W';cls+='fromScreen';}}
$('#List tr > .Marker[index='+ix+']').addClass(cls);});},render_floors:function(){$("#MapApp #Floor").empty().append('<div class="Title" title="'+$$("MapLevelHint")+'">'+$$("MapLevel")+'</div>').append('<div class="Arrowpad"></div>').append('<div class="Direct"></div>')
$("#MapApp #Floor .Arrowpad").append('<div class="Control FloorUp">').children('div:last').attr("title",$$("ControlLevelUp")).click(function(){Self.Map.Control.floor_up();}).hover(function(){Self.UI.Mouse.hover_floor(true,"Up");},function(){Self.UI.Mouse.hover_floor(false,"Up");});$("#MapApp #Floor .Arrowpad").append('<div class="Control FloorDown">').children('div:last').attr("title",$$("ControlLevelDown")).click(function(){Self.Map.Control.floor_down();}).hover(function(){Self.UI.Mouse.hover_floor(true,"Down");},function(){Self.UI.Mouse.hover_floor(false,"Down");});$.each(Self.Data.layer_ids_by_floor().reverse(),function(ix,id){var layer=Self.Data.layer(id);$("#MapApp #Floor .Direct").append('<div class="Control DirectFloor Floor'+layer.floor+' '+((Self.Current.map.floor==layer.floor)?"Selected":"")+'">').children('div:last').attr("title",layer.name+" ("+layer.map+")").attr("floor",layer.id).html("<strong>"+layer.label+"</strong>").click(function(){Self.Map.Control.floor(layer.id);});});Self.UI.tooltips();},render_tags:function(){$("#List,#Results,#ListPager").empty().filter("#Results").addClass("Empty");if(!Self.UI.Search.empty()){var results=Self.Data.results();if(Self.Data.show.tags.length==0){$("#Results").append('<div class="Found Not"><strong>'+$$("NotFound")+'</strong></div>').append('<div class="Set">'+$$("NotFoundInstructions")+'</div>');}else{$("#Results").append('<div class="Found"><strong>'+results.found+'</strong><span> '+Self.Native.plural(results.found,"TagsMatches")+':</span></div>');if(results.sets>1)$("#Results").append('<div class="Set" title="'+$$("ResultSetsHint")+'">'+$$("ResultsDisplaingSet")+' <strong>'+results.first+'</strong> - <strong>'+results.last+'</strong></div>');}
$('#List').empty().append('<table border="0" cellspacing="0"></table>');$.each(Self.Data.tag_ids_by_label(),function(ix,it){var tag=Self.Data.tag(it);var position=Self.Data.position(tag.position.position);var location=Self.Data.location(position.location);var layer=Self.Data.layer(position.layer);var selected_tag=(Self.UI.Mouse._last_click_marker)?Self.UI.Mouse._last_click_marker.attr("tag"):undefined;var path=Self.UI.Path.by_id(tag.id);var color=(path)?path.color:"#ffffff";var row=$('#List table').append('<tr><td class="Marker Tag '+tag.label+''+((selected_tag==tag.id)?" Selected":"")+'"><strong class="Marker"><span class="TagMarkerLabel">'+tag.label+'</span></strong></td></tr>').find('tr:last > .Marker');row.attr('index',tag.index).attr('tag',tag.id).append('<div class="Brief"><span class="Name" title="'+tag.name+' (#'+tag.id+') '+(tag.description!=undefined?'- '+tag.description:'')+'">'+tag.name+'</span></div>').append(tag.description!=undefined?'<div class="Description">'+tag.description+'</div>':'').click(function(){Self.UI.Mouse.click_tag_marker(this);}).mouseover(function(e){e.stopPropagation();Self.UI.Mouse.enter_marker(this);}).mouseout(function(e){e.stopPropagation();Self.UI.Mouse.exit_marker(this);}).children(".Brief").prepend('<div class="PathTrigger" title="'+$$("PathTriggerHint")+'"><span>'+$$("PathTrigger")+'</span></div>').children(".PathTrigger").css({backgroundColor:color}).click(function(e){e.stopPropagation();Self.UI.Mouse.click_path_trigger(this);});if(!layer)return;row.attr('floor',layer.id).find(".Brief").append('<span class="Location"><span class="Floor" title="'+layer.name+'">'+layer.label+'</span> <span title="'+$$("TagPositionHint")+'">'+location.name+'</span></span>');});if(Self.Data.show.tags.length!=0){$("#ListPager").append('<div class="NextSet" title="'+$$("NextSetHint")+'">'+$$("NextSet")+'</div>').append('<div class="PreviousSet" title="'+$$("PreviousSetHint")+'">'+$$("PreviousSet")+'</div>').append('<div class="Sets"><span class="Title">'+$$("ResultsSet")+'</span></div>');var sets=[];while(sets.length<results.sets)sets.push(sets.length+1);$.each(sets,function(ix,it){if(it==results.set)$("#ListPager .Sets").append('<strong title="'+$$("ActualSetHint")+'">'+it+'</strong>')
else $("#ListPager .Sets").append('<em title="'+$$("ResultsSetX")+' '+it+'" index="'+it+'">'+it+'</em>');});}
$("#ListPager .NextSet").click(Self.UI.Mouse.click_next_results_set)
$("#ListPager .PreviousSet").click(Self.UI.Mouse.click_previous_results_set)
$("#ListPager .Sets em").click(Self.UI.Mouse.click_results_set)}
Self.Map.render_tags();},tag_detail:function(id){var tag=Self.Data.tag_detail(id);var position=Self.Data.position(tag.position.position);var location=Self.Data.location(position.location);var floor=Self.Data.layer(position.layer);var label=Self.Data.tag(id).label;var str="";str+='<div class="Label"><span>'+label+'</span></div>';str+='<div class="Name">'+tag.name+'</div>';str+='<div class="Description">'+tag.description+'</div>';str+='<div class="Sensors">';$.each(tag.sensors,function(ix,it){var sensor=it.sensor;str+='<div class="Sensor '+sensor.name+''+(sensor.index?' Level'+sensor.index:'')+'" title="'+Self.Native.phrase(sensor.name+"Sensor")+': '+sensor.value+'"></div>';});str+='</div>';str+='<div class="LastGeographic">';var date_format=$$("TagDetailDateFormat");var last_seen_date=Date.now().set({miliseconds:tag.position.timestamp}).toString(date_format);var parent_location=Self.Data.location(location.parent);str+='<div class="Building">';if(parent_location)str+='<span title="'+$$("ParentLocation")+' '+parent_location.id+'">'+parent_location.name+'</span>';str+='<div class="Floor">'+$$("FloorX")+' <strong title="'+floor.name+'">'+floor.label+'</strong></div>';str+='</div>';str+='<div class="Location" title="'+$$("Location")+' '+location.id+'">'+location.name+'</div>';str+='<div class="Timestamp" title="'+$$("LastSeenHint")+'">'+last_seen_date+'</div>';str+='<div class="PathTrigger">'+$$("TagPath")+'</div>';str+='<div class="History"><div class="GUI">';str+='</div></div>';str+='</div>';return'<div class="GUI"><div class="GUI"><div class="GUI">'+str+'</div></div></div>';},node_detail:function(id,index){var tag=Self.Data.tag(id);var position=Self.Data.position(tag.positions[index].position);var location=Self.Data.location(position.location);var str="sdsds";str+='<div class="Coordinates">'+position.longitude+', '+position.latitude+'</div>';return'<div class="GUI"><div class="GUI"><div class="GUI">'+str+'</div></div></div>';},_signalize_failed_loading:function(reason){$("body").addClass("Failed");},_signalize_pan:function(dir){Self.Map.on_move_end();$("#MapApp #Pan").addClass(dir+"Pan");},_signalize_zoom:function(dir){$("#MapApp #Zoom").addClass(dir+"Zoom");Self.Map.on_zoom();},_signalize_floor:function(dir){$("#MapApp #Floor").addClass(dir+"Floor");Self.Map.on_floor();},_unload:function(){Self.UI.Updater._stop();Self.UI.Mouse.on_map(false);}}
Selene.Map.Layer={add_rtls:function(){if(Self.Map.Layer._rtls!=undefined)return false;Self.Map.Layer._rtls={};$.each(Self.Data.layers(),function(ix,it){var css_class="MapRTLS"
var layer=new OpenLayers.Layer.WMS(it.map,Self.Map.server_url(),{layers:it.map},{transitionEffect:'resize',css_class:css_class,gutter:0,projection:new OpenLayers.Projection("EPSG:900913"),DEFAULT_PARAMS:{exceptions:"image/png",format:"image/png"}});Self.Map.object.addLayer(Self.Map.Layer._rtls[it.id]=log(layer,'+ RTLS map "'+it.name+'"'));});return Self.Map.Layer._rtls;},add_road:function(){if(typeof(G_API_VERSION)!='undefined'){var css_class="MapRoad";var label=$$(css_class);var layer=new OpenLayers.Layer.Google(label,{type:G_NORMAL_MAP,transitionEffect:'resize',gutter:12,label:label,css_class:css_class,sphericalMercator:true,});Self.Map.Layer.add(Self.Map.Layer._road=log(layer,'+ Google™ road map'));return layer;}
return false;},road:function(){var layer=Self.Map.Layer._road;return layer;},_road:undefined,add_satellite:function(){if(typeof(G_API_VERSION)!='undefined'){var css_class="MapSatellite";var label=$$(css_class);var layer=new OpenLayers.Layer.Google(label,{type:G_SATELLITE_MAP,transitionEffect:'resize',gutter:12,label:label,css_class:css_class,sphericalMercator:true,});Self.Map.Layer.add(Self.Map.Layer._satellite=log(layer,'+ Google™ satellite'));layer.resolutions=Self.Map.object.resolutions;return layer;}
return false;},satellite:function(){var layer=Self.Map.Layer._satellite;return layer;},_satellite:undefined,add_vector:function(){var label=$$("VectorOverlay");var layer=new OpenLayers.Layer.Vector(label,{label:label,projection:new OpenLayers.Projection("EPSG:900913")});Self.Map.Layer.add(Self.Map.Layer.vector=Self.Map.Vector.object=log(layer,"+ Vector overlay layer"));return layer;},add:function(layer){Self.Map.object.addLayer(layer);return layer;},_add_hook:function(e){e.layer.events.on({scope:Self,loadstart:Self.UI.start_loading,loadend:Self.UI.stop_loading});},rtls:function(){var layer=Self.Map.Layer._rtls[Self.Current.map.layer];return layer;},_rtls:undefined,css_class:function(layer){return layer.CLASS_NAME.split(".").pop();},map:function(){var zoom=log(Self.Map.zoom_by_index(log(Self.Current.map.zoom)));var map=Self.Map.Layer[log(zoom.map)]();return map;},}
Selene.UI.Key={press:function(e){var shiftMultiplier=(e.shiftKey)?Self.Current.map.shift_multiplier:1;var searching=Self.UI.Search.is_open();if(e.ctrlKey){switch(e.keyCode){case OpenLayers.Event.KEY_RIGHT:if(!searching)Self.Map.Control.zoom_in();break;case OpenLayers.Event.KEY_LEFT:if(!searching)Self.Map.Control.zoom_out();break;case OpenLayers.Event.KEY_UP:if(!searching)Self.Map.Control.floor_up();break;case OpenLayers.Event.KEY_DOWN:if(!searching)Self.Map.Control.floor_down();break;}}else{switch(e.keyCode){case OpenLayers.Event.KEY_LEFT:if(!searching)Self.Map.Control.pan_west(shiftMultiplier);break;case OpenLayers.Event.KEY_UP:if(!searching)Self.Map.Control.pan_north(shiftMultiplier);break;case OpenLayers.Event.KEY_RIGHT:if(!searching)Self.Map.Control.pan_east(shiftMultiplier);break;case OpenLayers.Event.KEY_DOWN:if(!searching)Self.Map.Control.pan_south(shiftMultiplier);break;case OpenLayers.Event.KEY_ESC:if(searching)Self.UI.Search.close();}}}}
Selene.UI.Path={_store:{},add:function(id){var stored=Self.UI.Path.by_id(id);if(stored){Self.UI.Path.by_id(id,null);Self.Map.Layer.vector.removeFeatures(stored.features);Self.Map.Layer.nodes.clearMarkers();$.each(Self.Data.show.tag_paths,function(ix,it){if(it==id)Self.Data.show.tag_paths.splice(ix,1);});return false;}
Self.Data.show.tag_paths.push(id);return true;},all:function(){return Self.UI.Path._store;},by_id:function(id,value){if(id==undefined)return false;switch(value){case undefined:var stored=Self.UI.Path._store[id];if(!stored)return false;return stored;case null:var stored=Self.UI.Path._store[id];Self.Map.Vector.object.removeFeatures(stored.features);delete Self.UI.Path._store[id];return stored;default:return Self.UI.Path._store[id]=value;}},floorize:function(layer){if(layer==undefined)return false;Self.UI.Path.clear();$.each(Self.UI.Path._store,function(ix,it){var tag=Self.Data.tag_path(it.id);if(!tag)return;Self.UI.Path._store[it.id].positions=tag.positions;var path=Self.Map.Vector._draw_tag_path(it);Self.UI.Path._store[it.id].features=path.features;});},clear:function(){Self.Map.Vector._tag_paths={};Self.Map.Vector.clear();return Self.Map.Layer.vector;}}
Selene.Map.Control={pan:function(place){place=new OpenLayers.LonLat(place.longitude,place.latitude)
Self.Map.object.panTo(place);},pan_west:function(multiplier){var distance=Self.Map.object.tileSize.w*multiplier;Self.UI._signalize_pan("West");if(!multiplier)multiplier=1;Self.Map.object.pan(-distance,0);return distance;},pan_east:function(multiplier){var distance=Self.Map.object.tileSize.w*multiplier;Self.UI._signalize_pan("East");if(!multiplier)multiplier=1;Self.Map.object.pan(distance,0);return distance;},pan_north:function(multiplier){var distance=Self.Map.object.tileSize.h*multiplier;Self.UI._signalize_pan("North");if(!multiplier)multiplier=1;Self.Map.object.pan(0,-distance);return distance;},pan_south:function(multiplier){var distance=Self.Map.object.tileSize.h*multiplier;Self.UI._signalize_pan("South");if(!multiplier)multiplier=1;Self.Map.object.pan(0,distance);return distance;},floor:function(id){if(Self.Current.map.zoom>=Self.Current.map.rtls_min_zoom&&id!=Self.Current.map.layer){var layer=Self.Data.layer(id);Self.UI._signalize_floor(layer.floor<Self.Current.map.floor?"Down":"Up");Self.Current.map.layer=id;Self.Current.map.floor=layer.floor;var layer=Self.Map.Layer.rtls();Self.Map.object.setBaseLayer(layer);Self.Map.floorize_markers();return layer;}
return false;},floor_up:function(){var floor=Self.Current.map.floor;floor++;var layer=Self.Data.layer_by_floor(floor);var layers=Self.Data.layers();if(!layer)layer=Self.Base.order_by_floor(layers).reverse()[0].layer;Self.Map.Control.floor(layer.id);return floor;},floor_down:function(){var floor=Self.Current.map.floor;floor--;var layer=Self.Data.layer_by_floor(floor);var layers=Self.Data.layers();if(!layer)layer=Self.Base.order_by_floor(layers)[0].layer;Self.Map.Control.floor(layer.id);return floor;},floor_by_tag_id:function(id){if(Self.Current.map.zoom<Self.Current.map.rtls_min_zoom)return;var tag=Self.Data.tag(id);var position=Self.Data.position(tag.position.position);var floor=Self.Data.layer(position.layer);Self.Map.Control.floor(floor.id);return floor;},zoom:function(level,center){var object=Self.Map.object;if(!center){var x=object.size.w*0.5;var y=object.size.h*0.5;center=object.getLonLatFromPixel(new OpenLayers.Pixel(x,y));}
level=Self.Map.Control.zoom_back_if_outbound(level,center);var zoom=Self.Map.zoom_by_index(level);if(!zoom)return false;Self.Current.map.zoom=zoom.index;var has_sat=zoom.sat;var $body=$("#Body");var cls="SatelliteAvailable";if(has_sat){$body.addClass(cls);}else{$body.removeClass(cls);}
var layer=Self.Map.Layer[zoom.layer];if(!layer)return false;Self.UI._signalize_zoom(level<Self.Current.map.zoom?"In":"Out");var so_far=$("body").attr("layer");if(so_far)$("body").removeClass(so_far);var from_now=layer().css_class;$("body").addClass(from_now).attr({layer:from_now});object.panTo(center);if(Self.Map.mode()=="map"){object.setBaseLayer(Self.Map.Layer.map());}else{if(!has_sat)Self.Map.mode("map");}
object.zoomTo(zoom.level);Self.Map.floorize_markers();$("#MapApp #Controls .DirectZoom.Selected").removeClass("Selected");$("#MapApp #Controls .DirectZoom[index="+zoom.index+"]").addClass("Selected");return level;},zoom_back_if_outbound:function(level,center){log(level,"LEVEL")
var bounds=log(Self.Current.map.bounds.area)
var inside=log(log(new OpenLayers.Bounds(bounds[0],bounds[3],bounds[2],bounds[1])).containsLonLat(log(center)));if(!inside){var index;$.each(Self.Current.map.zooms,function(ix,it){log(it,ix)
if(it.index<level&&it.map!="rtls")index=log(it.index,"SET");});log(index);log(Self.Map.zoom_by_index(index));}
return level;},zoom_in:function(center){var index=Self.Current.map.zoom+1;var do_zoom=true;if(Self.Map.mode()=="satellite"){var zoom=Self.Map.zoom_by_index(index);if(!zoom.sat)do_zoom=false;}
if(!do_zoom)return false;Self.Map.Control.zoom(index,center);return index;},zoom_out:function(center){var zoom=Self.Current.map.zoom-1;Self.Map.Control.zoom(zoom,center);return zoom;}}
Selene.Map.Vector={object:undefined,_last_tag_path_color:-1,_draw_tag_path:function(id,color){if(typeof(id)=="object"){var tag=id;color=tag.color;}else{var tag=Self.Data.tag(id);if(!color)color="rgb(0,0,0)";var path=Self.Data.tag_path(id);tag.positions=path.positions;}
var positions=tag.positions;var features=[];var points=[];var style_green={strokeColor:color,strokeWidth:2,strokeDashstyle:"solid",pointerEvents:"visiblePainted"};var set=0;points[set]=[];$.each(positions,function(ix,it){var position=Self.Data.position(it.position);if(position){if(Self.Current.map.zoom>=Self.Current.map.rtls_min_zoom&&position.layer!=Self.Current.map.layer){if(points[set].length!=0){set++;points[set]=[];}}else{var point=new OpenLayers.Geometry.Point(position.longitude,position.latitude);points[set].push({point:point,index:ix,position:position,tag:tag});}}});$.each(points,function(ix,point_set){var pnts=[];$.each(point_set,function(ixx,it){pnts.push(it.point);});features.push(new OpenLayers.Feature.Vector(new OpenLayers.Geometry.LineString(pnts),null,style_green));return;$.each(point_set,function(ixx,point){log(point,"PNT")
var layer=Self.Data.layer(point.position.layer);Self.Map.Layer.nodes.addMarker(Self.Map.new_node_marker(point.position,"label",point.index,layer,point.tag));});});Self.Map.Layer.vector.addFeatures(features);return{positions:positions,features:features};},clear:function(){Self.Map.Layer.vector.destroyFeatures();return Self.Map.Layer.vector;}}
Selene.UI.Search={mode:"Teaser",initialize:function(){Self.initialized("Search");$("#Search .textfield").change(Self.UI.Search.textfield_change);Self.UI.Search.update();$("#SearchForm").submit(function(){return Self.UI.Mouse.click_submit_search();})
$(".Settings .Influential").change(Self.UI.Search.influential_change);$(".Settings :input:not(.Criteria)").change(Self.UI.Search.update_save_query);$("#Query .PerView .Number").change(Self.UI.Search.update_save_query);$(".Settings .Subsettings").css({display:"none"});$(".Settings .date_input").blur(function(){var entered=$(this).val();var guessed=Date.parse(entered);if(guessed){var guessed_string=guessed.toString($$("GuessTimeFormat"));if(entered!=guessed_string)$(".Settings .date_input").val(guessed_string);}});Self.UI.Search.update_save_query($("#SearchQuery").val());Self.UI.Search.update_selection();},textfield_change:function(event){var field=$(event.target);var value=field.val();Self.UI.Search.update(value);Self.UI.Search.parse_query(value);Self.UI.Search.update_save_query(value);if($.string(value).empty()){Self.UI.Search.make_textfield_default(true);}},make_textfield_default:function(to_default){var default_class="DefaultValue";var field=$("#Search .textfield");if(to_default){field.addClass(default_class);var value=field.attr("default");}else{field.removeClass(default_class);var value="";}
field.val(value);},influential_change:function(e){if(typeof(e)=="string")e={target:e};var select=$(e.target);var val=select.val();var cls=$.string(val).capitalize().str;select.siblings(".Subsettings").hide().find(":input").attr("disabled","disabled");var block=select.siblings(".Subsettings."+cls).css({display:"inline"});if(block)block.find(":input").attr("disabled","");$.each(block.children("[default]"),function(ix,it){it=$(it);it.val(it.attr("default"));});var fld=block.find("input")[0];$(fld).focus();},_save_query:"",update_save_query:function(query){if(typeof(query)=="object")query=undefined;if(typeof(query)=="string"){Self.UI.Search.parse_query(query);}else if(query==undefined){query=[];var field=$("#Search .textfield");var fulltext=field.val();if(fulltext==field.attr("default"))fulltext="";$("#Body").removeClass("TimeOn");$(".SearchPanel .command:enabled").each(function(ix,it){it=$(it);var command=it.val();if(command=="void")return;switch(command){case"from":case"till":Self.UI.Search.from_selection("till");var name=$.string(it.parents(".SearchPanel").attr("id")).gsub("Option","").str;var criteria=$.string(name).capitalize().str;var id=it.attr("id");var number=(command=="till")?Selene.Base.numerize(id):"";var value=$(".SearchPanel #Param"+criteria+$.string(command).capitalize().str+number).val();if(!$.string($.trim(value)).empty()){$("#Body").addClass("TimeOn");var chunk=command+":"+value.split(" ").join("_");query.push(chunk);}
break;case"range":$("#Body").addClass("TimeOn");var chunk=$("#ParamTimeRange").val();if(!$.string(query).empty())query.push(chunk);break;case"today":$("#Body").addClass("TimeOn");var chunk="from:today";query.push(chunk);break;case"yesterday":$("#Body").addClass("TimeOn");var chunk="from:yesterday";query.push(chunk);break;}});var selection=Self.UI.Search.selection();if(selection.length>0)query.push(selection.join(" "))
var number=$("#Query .PerView .Number").val();if(number!=Self.Current.results_per_page)query.push("number:"+number);query.unshift(fulltext)
query=Self.UI.Search._save_query=query.join(" ");}
query=$.string(query).strip().str;$("#SearchQuery").val(query);},selection:function(){log("selection")},is_open:function(){return(Self.UI.Search.mode!="Teaser");},close:function(bypass_history){log("DEPRECATED","Search.close")
return;if(!bypass_history)Self.History.add("map");Self.UI.Search.update();$("#Search").addClass(Self.UI.Search.mode="Teaser").removeClass("Basic").removeClass("Advanced").removeClass("Browser");},open:function(bypass_history){Self.UI.Search.basic(bypass_history);},basic:function(bypass_history){log("DEPRECATED","Search.basic")
return;$("#Search").removeClass("Teaser").removeClass("Browser").removeClass("Advanced").addClass(Self.UI.Search.mode="Basic").find(".textfield").focus();if(!bypass_history)Self.History.add("search");},advanced:function(bypass_history){log("DEPRECATED","Search.advanced")
return;$("#Search").removeClass("Teaser").removeClass("Basic").removeClass("Browser").addClass(Self.UI.Search.mode="Advanced").find(".fulltext").focus();if(!bypass_history)Self.History.add("asearch");},browser:function(bypass_history){log("DEPRECATED","Search.browser")
return;$("#Search").removeClass("Teaser").removeClass("Basic").removeClass("Advanced").addClass(Self.UI.Search.mode="Browser");if(!bypass_history){Self.History.add("browse");}else{Self.UI.Search.browse("ROOT");}},browser_parents:["ROOT"],browse:function(parent_id){if(parent_id!="ROOT"){Self.UI.Search.browser_parents.push(parent_id);}else{Self.UI.Search.browser_parents=["ROOT"];if($("#Browser .Title").length==0){$("#Browser").prepend('<h3 class="Title">'+$$("SelectionAddTo")+'</h3>').wrapInner('<div class="GUI">');$("#Selected").wrapInner('<div class="GUI">');}}
var id=(parent_id=="ROOT")?"":parent_id;var level=Self.UI.Search.render_parents();Self.UI.Search.render_members(null,level);Self.Data.Load.browse(id,{started:function(messenger){$("#Browser .Members .Loading").empty().append('<div class="LoadingProgress">'+$$("Loading")+'</div>').css({opacity:0}).stop().animate({opacity:1},1000);},finished:function(messenger){Self.UI.Search.render_members(id,level);Self.UI.tooltips();$("#Browser .Member, #Browser .Parent").click(Self.UI.Mouse.click_browser_member);$("#Browser .Expand.Member .Expander").click(Self.UI.Mouse.click_browser_expandable_member);$("#Browser .Expand.Parent .Expander").click(Self.UI.Mouse.click_browser_parent_member);$("#Browser .Member .Admin.Edit").click(Self.UI.Admin.Mouse.click_browser_member_edit);},stopped:function(messenger){var str='<div class="LoadingProgress">'+$$("LoadingStopped")+'</div>';if(messenger.retry_in){str+=$$("LoadingStoppedNextTryIn")+" "+messenger.retry_in+" "+$$("Seconds");}else{str+=$$("LoadingStoppedPermanently");}
Self.Data.show.members=[];$("#Browser .Members .Loading").empty().append(str).stop().css({opacity:1});}});},browse_parent:function(index){var ident=Self.UI.Search.browser_parents[index];Self.UI.Search.browser_parents.splice(index,999);Self.UI.Search.browse(ident,true);},render_members:function(parent_id,level){var list=$("#Browser .Members").empty();list=list.append('<table>').children("table").css({position:"relative",left:((level-1)*10)+10});if(parent_id==null){list.parent().append('<div class="Loading"></div>')
return true;}
$.each(Self.Data.show.members,function(ix,it){var pointer=Self.Data.member(it);var member=Self.Data[pointer.type](pointer.id);var image=(member.image!=undefined&&member.image!="")?true:false;var show=Self.Data.show["browser_"+Self.Base.pluralize(pointer.type)];var index=$.inArray(member.id,show);var str='<tr class="Member">';str+='<td class="Expander">';str+='</td>';str+='<td class="Image">';if(image)str+='<img src="'+member.image+'">';str+='</td>';str+='<td class="Name" title="'+member.id+'">';str+=member.name;if(pointer.members)str+=' ('+pointer.members+')';str+='</td>';if(Self.UI.Admin){str+='<td class="Actions">';str+='<span class="Control Admin Edit">'+$$("BrowserEdit")+'</span>';str+='</td>';}
str+='</tr>';list.append(str);var line=list.find(".Member:last");line.addClass($.string(pointer.type).capitalize().str);line.attr("member",pointer.id);if(pointer.members)line.addClass("Expand");if(index!=-1)line.addClass("Selected");});$("#Browser .Expand.Member .Expander").attr({title:$$("BrowserExpandHint")});$("#Browser .Member .Selection").attr({title:$$("BrowserSelectHint")});$("#Browser .Selected.Member .Selection").attr({title:$$("BrowserRemoveHint")});$("#Browser .Expand.Parent .Expander").attr({title:$$("BrowserCollapseHint")});},render_parents:function(){var list=$("#Browser .Parents").empty();var index;var parents=Self.UI.Search.browser_parents;$.each(parents,function(ix,it){index=ix;if(it=="ROOT")return;if(it-0==it){var pointer=Self.Data.member(it);var ident=[pointer.type,pointer.id];var member=Self.Data[ident[0]](ident[1]);var name=member.name;var image=(member.image!=undefined&&member.image!="")?true:false;var show=Self.Data.show["browser_"+Self.Base.pluralize(pointer.type)];var show_index=$.inArray(member.id,show);}else{}
var last_one=(ix==parents.length-1)?true:false;var str='<table><tr class="Parent Expand">';str+='<td class="Expander">';str+='</td>';str+='<td class="Image">';if(image)str+='<img src="'+member.image+'">';str+='</td>';str+='<td class="Name">';str+=name;if(!last_one)str+=''
else str+=':';str+="</td>";str+="</tr></table>";list.append(str);var line=list.find(".Parent:last");if(last_one)line.addClass("MembersParent");line.attr({index:ix,member:member.id});line.parents("table").css({position:"relative",left:((ix-1)*10)});if(show_index!=-1)line.addClass("Selected");});return index;},skip_first:0,per_page:undefined,_selection:[],selection:function(){return Self.UI.Search._selection;},to_selection:function(command,param){var textfield=$("#SearchQuery");var value=textfield.val();var chunk=command+":"+param;var selection=Self.UI.Search._selection;if($.inArray(chunk,selection)==-1)selection.push(chunk);log(selection,"to_selection")
switch(command){case"tag":var a=Self.Data.show[command+"s"];if($.inArray(param,a)!=-1)a.push(param);}
if($.trim(value)==""){var new_value=chunk;}else{var new_value=value+" "+chunk;}
textfield.val(new_value);},from_selection:function(command,param){var textfield=$("#SearchQuery");var value=textfield.val();if(param==undefined){log("remove "+command+" from query")
var query=value.split(" ");var new_query=[]
$.each(query,function(ix,bit){var bitsplit=bit.split(":");if(bitsplit[0]!=command)new_query.push(bit);});}else{var chunk=command+":"+param;var selection=Self.UI.Search._selection;var i=$.inArray(chunk,selection)
if(i!=-1)selection.splice(i,1);log(selection,"from_selection")
var query=value.split(" ");var new_query=[]
$.each(query,function(ix,bit){var bitsplit=bit.split(":");if(bitsplit.length==1){new_query.push(bit);}else{var comm=bitsplit[0];var params=bitsplit[1].split(",");var found=$.inArray(param+"",params);if(found!=-1){params.splice(found,1);params=params.join(",");if(params!=""){new_query.push(comm+":"+params);}}else{new_query.push(bit);}}});}
var query_string=new_query.join(" ");if(query_string!=value)textfield.val(query_string);log(query_string,"Query string updated.");},update_selection:function(){var textfield=$("#SearchQuery");var value=textfield.val();var query=value.split(" ");var members=[];var selection=Self.UI.Search.selection();$.each(selection,function(ix,it){var split=it.split(":");members.push(split[1]);});var list=$("#Selected .List").empty();if(members.length>0){list=list.append("<table>").children("table");$.each(members,function(ix,it){var pointer=Self.Data.member(it);if(!pointer)return;var member=Self.Data[pointer.type](pointer.id);var image=(member.image!=undefined&&member.image!="")?true:false;var show=Self.Data.show["browser_"+Self.Base.pluralize(pointer.type)];var index=$.inArray(member.id,show);var path=Self.UI.Search.member_path(member);var str='<tr class="Member">';str+='<td class="Image">';if(image)str+='<img src="'+member.image+'">';str+='</td>';str+='<td class="Name" title="'+member.id+'">';str+=member.name
if(path.length>0)str+=' <span class="Path">('+path.join(' <span class="Divider">›</span> ')+')</span>';str+='</td>';str+='</tr>';list.append(str);var line=list.find(".Member:last");line.addClass($.string(pointer.type).capitalize().str);line.attr({title:"Odebrat »»»",member:pointer.id,});line.addClass("Selected");});var member_id=members.slice(-1)[0];var recent_member=Self.Data.member(member_id);if(recent_member){var count=members.length;var recent_object=Self.Data[recent_member.type](recent_member.id);var recent=recent_object.name;var show=Self.Data.show["browser_"+Self.Base.pluralize(recent_member.type)];var index=$.inArray(recent_member.id,show);}else{var count=0;}}else{var count=0;list.append('<div class="Disclaimer">'+$$("SelectionEmpty")+'</div>').append('<div class="Instructions">'+$$("SelectionEmptyInstructions")+'</div>');}
var str='<h4>'+$$("YourSelection");str+=' (<span class="Members">'+count+'</span>)';if(count>0)str+=' <span class="Cancel">'+$$("SelectionCancel")+'<span> '+$$("SelectionCancelConfirm")+'</span></span></h4>';$("#Selected .Trigger").empty().append(str).find(".Members").stop().css({color:"#ffffff",backgroundColor:"#000000"}).animate({color:"#000000",backgroundColor:"#ffd900"},500);$("#Selected .List .Member").click(Self.UI.Mouse.click_search_selection_remove);$("#Selected .Trigger .Cancel").click(Self.UI.Mouse.click_search_selection_cancel);if(members.length==0)$("#Selected").addClass("Empty")
else $("#Selected").removeClass("Empty");if(selection.length!=0){$("body").addClass("SelectionOn");}else{$("body").removeClass("SelectionOn");}},member_path:function(object,get){if(!object)return false;if(typeof(object)!="object"){var member=Self.Data.member(object);object=Self.Data[member.type](member.id);}
var path=[];if(!get)get="name";var parent_id=object.parent;if(parent_id)var has_parent=true;while(has_parent){var parent=Self.Data.group(parent_id);if(!parent)parent=Self.Data.tag(parent_id);if(parent){path.unshift(parent[get]);parent_id=parent.parent;}else{has_parent=false;}}
return path;},update:function(value){if(value==undefined)value=$("#Search .textfield").val();if(value=="")$("#Search .textfield").addClass("Empty")
else $("#Search .textfield").removeClass("Empty");},collect_query:function(){Self.UI.Search.parse_query();var query=Self.UI.Search.query_string(true);return Self.UI.Search._last_query=query;},query_string:function(full){if(!full)full=false;var query=[];$.each(Self.UI.Search.query(true),function(ix,it){if(it.command=="fulltext"){query.push(it.data);}else{if(full)query.push(it.command+":"+it.data);}});var number=$("#Query .PerView .Number").val()-0;if(number!=Self.Current.results_per_page)query.push("number:"+number);var skip_first=Self.UI.Search.skip_first;if(skip_first)query.push("skip_first:"+skip_first);return query.join(" ");},searching:function(value){if(value==undefined)return Self.UI.Search._searching;if(value)$("#Body").addClass("Searching")
else $("#Body").removeClass("Searching").addClass();return Self.UI.Search._searching=value;},_searching:false,_last_query:undefined,_query:undefined,_query_commands:{fulltext:true,tag:true,group:true,groups:true,events:true,from:true,till:true,skip_time:true,distance:false,skip_first:false,number:true},query:function(object){if(!object){if(!Self.UI.Search._last_query)return"";return Self.UI.Search._last_query.query;}else{return Self.UI.Search._query;}},parse_query:function(query){if(!query)query=$("#SearchQuery").val();var parsed=[];var split=[];$.each(query.split(" "),function(ix,it){var chunk=it.split(":");if(chunk.length==1)chunk.unshift("fulltext");var object={command:chunk[0],data:chunk.slice(1).join(":")};parsed.push(object);});var leave=[];var timeOneSet=false;var $time_range=$("#ParamTimeRange").val("");var rangeFull=false;$.each(parsed,function(ix,it){switch(it.command){case"fulltext":leave.push(it.data);break;case"from":case"till":Self.UI.Search.check_criteria("Time",true);var el="#TimeOption #ChoiceTime1";$(el).val("range");Self.UI.Search.influential_change(el);var exval=$time_range.val();if(exval==""){$time_range.val(it.command+":"+it.data);}else if(!rangeFull){$time_range.val(exval+" "+it.command+":"+it.data);rangeFull=true;}
break;case"number":$("#Query .PerView .Number").val(it.data);break;case"tag":case"group":Self.UI.Search.to_selection(it.command,it.data)
break;default:leave.push(it.command+":"+it.data);}});Self.UI.Search.update_save_query(parsed);$("#Search .textfield").val(leave.join(" "));if(rangeFull)$time_range.blur();return Self.UI.Search._query=parsed;},check_criteria:function(name,checked){var value=(checked)?"checked":"";$(".SearchOption #Criteria"+name).attr("checked",value).parent().addClass("Selected");},textfield:function(value){var field=$("#Search .textfield");if(value==undefined)return field.val();field.val(value);return value;},empty:function(){return(Self.UI.Search.query()=="");},submit:function(collect,success,fail){var no_results=function(){if(Self.Data.show.tags.length==0){if(Self.UI.Search._last_query=="")$("#Body").removeClass("Results");Self.Map.Control.zoom(0);if(fail)fail();return true;}else{$("#Body").addClass("Results");return false;}}
if(!collect&&Self.UI.Search.empty()){Self.UI.Search.searching(false);no_results();if($.isFunction(fail))fail();return false;}
Self.Data.Load.search(collect,{started:function(messenger){Self.UI.Search.searching(true);},finished:function(messenger){Self.UI.Search.searching(false);var results=Self.Data.results();var detail=Self.UI.Popup.object.detail;if(detail)if(detail.visible())if(messenger.response.tags[$(detail.div).attr("tag")]==undefined)Self.UI.Popup.hide_detail();if(results.set==1)Self.UI.Search.per_page=$("#Query .PerView .Number").val();if(no_results())return;if(collect){var world=Self.Current.map.bounds.world;var extent={t:world[0],r:world[0],b:world[1],l:world[1]};var bounds_set=false;$.each(messenger.response.tags,function(ix,it){var pos=log(Self.Data.position(it.position.position),ix);if(pos){bounds_set=true;if(log(pos.longitude)>extent.r)extent.r=pos.longitude;if(pos.longitude<extent.l)extent.l=pos.longitude;if(log(pos.latitude)>extent.t)extent.t=pos.latitude;if(pos.latitude<extent.b)extent.b=pos.latitude;}});if(bounds_set){log(extent,"EXXX");var bounds=new OpenLayers.Bounds(extent.l,extent.b,extent.r,extent.t);var closest=log(Self.Map.object.getZoomForExtent(log(bounds),true),"Z");var zoom;$.each(Self.Current.map.zooms,function(ix,it){if(zoom==undefined&&log(it.level)<=log(closest)){zoom=log(it.index,"ZOOOOM");return;}});if(log(zoom)===undefined)zoom=6;var tag=Self.Data.tag(Self.Data.show.tags[0]);var position=Self.Data.position(tag.position.position);var center=bounds.getCenterLonLat();Self.Map.Control.zoom(zoom,center);Self.Map.Control.floor_by_tag_id(tag.id);}else{Self.Map.Control.zoom(Self.Current.map.zooms[0].level);}}
if(success)success();},stopped:function(messenger){Self.UI.Search.searching(false);no_results();}});return true;}}
Selene.UI.Mouse={click_map:function(e){},click_map_app:function(e){Self.UI.Mouse.close_search_option();},out_map:function(e){Self.UI.Mouse.on_map(false);},on_map:function(e){if(e.timeStamp<Self.UI.Mouse._on_map_timestamp+100)return;if(Self.UI.Mouse._on_map_delay)window.clearTimeout(Self.UI.Mouse._on_map_delay);Self.UI.Mouse._on_map_timestamp=e.timeStamp;if(!e)return;if(Self.UI.Popup.object.hint)Self.UI.Popup.object.hint.hide();Self.UI.Popup.display_mouse_position(e);},click_developer_tools_switch:function(e){var el=$("#Body");var cls="Debug";var on=$(e.target).is(":checked");if(on){el.addClass(cls);}else{el.removeClass(cls)}},_on_map_delay:undefined,_on_map_timestamp:0,double_click_map:function(e){var ole=e.originalEvent;return;var lonlat=Self.Map.object.getLonLatFromViewPortPx(new OpenLayers.Pixel(ole.layerX,ole.layerY));Self.Map.Control.pan({longitude:lonlat.lon,latitude:lonlat.lat});},enter_marker:function(it){it=$(it);var index=it.attr("index");var tag=it.attr("tag");var str='[index='+index+']';$('#List tr > .Marker'+str).addClass('Highlighted');$('#Map .Marker'+str).addClass('Highlighted');},exit_marker:function(it){it=$(it);var index=it.attr("index");var str='[index='+index+']';$('#List tr > .Marker'+str).removeClass('Highlighted');$('#Map .Marker'+str).removeClass('Highlighted');},hover_pan:function(on,dir){if(on)$("#MapApp #Pan").addClass(dir+"Hover")
else $("#MapApp #Pan").removeClass(dir+"Hover");},hover_zoom:function(on,dir){if(on)$("#MapApp #Zoom").addClass(dir+"Hover")
else $("#MapApp #Zoom").removeClass(dir+"Hover");},hover_floor:function(on,dir){if(on)$("#MapApp #Floor").addClass(dir+"Hover")
else $("#MapApp #Floor").removeClass(dir+"Hover");},click_tag_marker:function(it){it=$(it);var index=it.attr("index");var id=it.attr("tag");var marker=Self.Base.marker_by_index(index);var tag=Self.Data.tag(id);var str='[index='+index+']';if(id==$(Self.UI.Mouse._last_click_marker).attr("tag")){$('#List tr > .Marker,#Map .Marker').removeClass('Selected');Self.UI.Popup.hide_detail();Self.Data.show.tag_details=[];Self.UI.Mouse._last_click_marker=undefined;}else{$('#List tr > .Marker,#Map .Marker').removeClass('Selected').filter('.Marker'+str).addClass('Selected');Self.UI.Popup.detail("",marker.lonlat,id);Self.Data.Load.detail(id,function(){$(Self.UI.Popup.object.detail.div).addClass("Loading");Self.UI.tooltips();},function(){var detail=Self.UI.tag_detail(id);Self.Data.show.tag_details=[id];$(Self.UI.Popup.object.detail.div).removeClass("Loading");Self.UI.Popup.set_detail_content(detail,true,id);Self.UI.tooltips();});Self.UI.Mouse._last_click_marker=it;}
Self.Map.Control.floor_by_tag_id(id);Self.UI.Mouse.close_search_option();},click_map_mode:function(){var $this=$(this);var mode=$this.attr("_mode");Self.Map.mode(mode);},click_node_marker:function(it){it=$(it);var index=it.attr("index");var id=it.attr("tag");var marker=Self.Base.node_marker_by_id_and_index(id,index);var tag=Self.Data.tag(id);if(id==$(Self.UI.Mouse._last_click_marker).attr("tag")){Self.UI.Popup.object.detail.hide();Self.UI.Mouse._last_click_marker=undefined;}else{var detail=Self.UI.node_detail(id,index);Self.UI.Popup.detail(detail,marker.lonlat,id);Self.UI.Mouse._last_click_marker=it;}},click_path_trigger:function(it){var type=typeof(it);if(type!="string"&&type!="number"){var id=$(it).parents("*[tag]").attr("tag");}else{var id=it;}
var path=Self.UI.Path.add(id);if(path){Self.Data.Load.path(id,function(){},function(succ){if(succ){Self.Map.Vector._last_tag_path_color++;var colors=Self.UI.colors;if(Self.Map.Vector._last_tag_path_color>=colors.length)Self.Map.Vector._last_tag_path_color=0;var color=Self.UI.color[colors[Self.Map.Vector._last_tag_path_color]];color="rgb("+color[0]+","+color[1]+","+color[2]+")";var path=Self.Map.Vector._draw_tag_path(id,color);path.color=color;path.id=id;$("#List .Marker[tag="+id+"] .PathTrigger").css({backgroundColor:color});Self.UI.Path.by_id(id,path);Self.UI.Popup.set_tag_history(id);Self.UI.Popup.update_detail_size();Self.UI.tooltips();}});}else{$("#List .Marker[tag="+id+"] .PathTrigger").css({backgroundColor:"#ffffff"});Self.UI.Popup.set_tag_history(id);Self.UI.Popup.update_detail_size();}
if(Self.UI.Popup.object.detail)Self.UI.Popup.update_detail_size();},_last_click_marker:undefined,click_search:function(){log("DEPRECATED","UI.Mouse.click_search")
return;},click_basic_search:function(){log("DEPRECATED","UI.Mouse.click_basic_search")
Self.UI.Search.basic();},click_advanced_search:function(){log("DEPRECATED","UI.Mouse.click_advanced_search")
Self.UI.Search.advanced();},click_browser_search:function(){log("DEPRECATED","UI.Mouse.click_browser_search")
Self.UI.Search.browser();},click_browser_expandable_member:function(e){var target=$(e.target);if(target.is(":input"))return;var ident=target.parents(".Member").attr("member");Self.UI.Search.browse(ident);},click_browser_parent_member:function(e){var target=$(e.target);var index=target.parents(".Parent").attr("index");var member_id=Self.UI.Search.browser_parents[index-1];Self.UI.Search.browse_parent(index-1);},click_browser_member:function(e){e.stopPropagation();var target=$(e.target);var parent_row=target.parents(".Parent");var member_row=target.parents(".Member");var index=parent_row.attr("index");var member_id=member_row.attr("member");var row=member_row;if(index){var member_id=Self.UI.Search.browser_parents[index];var row=parent_row;}
var ident=Self.Data.member(member_id);var type=ident.type;var id=ident.id;var member=Self.Data[type](id);var show=Self.Data.show["browser_"+Self.Base.pluralize(type)];var index=$.inArray(id,show);if(index==-1){show.push(id);row.addClass("Selected");row.attr({title:"Odebrat z výběru"});Self.UI.Search.to_selection(type,id);}else{show.splice(index,1);row.removeClass("Selected");row.attr({title:"Vybrat"});Self.UI.Search.from_selection(type,id);}
Self.UI.Search.update_selection();Self.UI.Search.submit(true,function(){},function(){});},click_search_selection_remove:function(e){var member_id=$(e.target).parents("[member]").attr("member");var member=Self.Data.member(member_id);var store_id="browser_"+Self.Base.pluralize(member.type);var store=Self.Data.show[store_id];var index=$.inArray(member.id,store);if(index!=-1)Self.Data.show[store_id].splice(index,1);Self.UI.Search.from_selection(member.type,member.id);$("#Browser tr[member="+member.id+"]").removeClass("Selected").attr({title:"Odebrat z výběru"});Self.UI.Search.update_selection();},click_search_selection_cancel:function(e){e.stopPropagation();$.each(["tag","group"],function(ix,type){var store_id="browser_"+Self.Base.pluralize(type);var store=Self.Data.show[store_id];$.each(store,function(ixx,id){Self.UI.Search.from_selection(type,id);$("#Browser tr[member="+id+"]").removeClass("Selected");});Self.Data.show[store_id]=[];});Self.UI.Search.update_selection();Self.UI.Search.submit(true,function(){},function(){});},click_submit_search:function(){Self.UI.Mouse.close_search_option();Self.UI.Search.searching(true);Self.UI.update(true);return false;},click_search_criteria:function(e){var object=$(e.target).parent();var inactive=object.hasClass("Inactive");if(inactive)return alert("Dosud nepodporováno");var checked=($("input.Criteria[name="+e.target.name+"]:checked").length==0)?0:1;if(checked)object.addClass("Selected")
else object.removeClass("Selected");var disabled=(checked)?"":"disabled";var first=object.find(".Settings :first:input");var value=first.attr("disabled",disabled).attr("default");if(value)first.val(value).trigger("change");},click_update:function(){Self.UI.update(false);},click_previous_results_set:function(){var results=Self.Data.results();var want_to=results.set-1;if(want_to<=results.sets&&want_to>0)var go_to=want_to;if(!go_to)return;var per_page=Self.UI.Search.per_page;Self.UI.Search.skip_first=per_page*(go_to-1);Self.UI.Search.submit(true);return true;},click_next_results_set:function(){var results=Self.Data.results();var want_to=results.set+1;if(want_to<=results.sets&&want_to>0)var go_to=want_to;if(!go_to)return;var per_page=Self.UI.Search.per_page;Self.UI.Search.skip_first=per_page*(go_to-1);Self.UI.Search.submit(true);Self.UI.Popup.hide_detail();return true;},click_results_set:function(){var e=$(this)
var go_to=e.attr("index");if(!go_to)return;var per_page=Self.UI.Search.per_page;Self.UI.Search.skip_first=per_page*(go_to-1);Self.UI.Search.submit(true);Self.UI.Popup.hide_detail();return true;},click_search_option:function(e){var container=$("#Body");var target=$(e.target);var id=target.parents(".SearchOption").attr("id");if(id=="Search")id="Query";var clss=id+"Open";var remove=container.hasClass(clss);if(id=="Selection")Self.UI.Search.browse("ROOT");Self.UI.Mouse.close_search_option();if(!remove)container.addClass(clss);},close_search_option:function(e){var container=$("#Body");container.removeClass("TimeOpen").removeClass("SelectionOpen").removeClass("SystemOpen").removeClass("QueryOpen");},on_bubble:function(event){Self.UI.Mouse._drop_out_bubble();$("#DetailPopup").stop().fadeTo("fast",1);},out_bubble:function(event){Self.UI.Mouse._drop_out_bubble();Self.UI.Mouse._out_bubble_timer=window.setTimeout(function(){window.clearTimeout(Self.UI.Mouse._bubble_timer);Self.UI.Mouse._out_bubble_timer=undefined;$("#DetailPopup").stop().fadeTo(3000,0.5);},500);},_drop_out_bubble:function(){if(Self.UI.Mouse._out_bubble_timer!=undefined){window.clearTimeout(Self.UI.Mouse._out_bubble_timer);Self.UI.Mouse._out_bubble_timer=undefined;}},_out_bubble_timer:undefined,_last_bubble_event_timestamp:undefined}
Selene.UI.Mouse.Wheel={object:undefined,initialize:function(){Self.initialized("MouseWheel");Self.UI.Mouse.Wheel.object=new OpenLayers.Handler.MouseWheel(Self,{up:function(e){e.stopPropagation();var xy=Self.Map.object.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x,e.xy.y));if(Self.UI.Mouse.Wheel.enabled)Self.Map.Control.zoom_in(xy);},down:function(e){e.stopPropagation();var xy=Self.Map.object.getLonLatFromPixel(new OpenLayers.Pixel(e.xy.x,e.xy.y));if(Self.UI.Mouse.Wheel.enabled)Self.Map.Control.zoom_out(xy);}});Self.UI.Mouse.Wheel.object.setMap(Self.Map.object);Self.UI.Mouse.Wheel.object.activate();},enable:function(e){return Self.UI.Mouse.Wheel.enabled=true;},enabled:true,disable:function(){return Self.UI.Mouse.Wheel.enabled=false;}}
Selene.UI.Admin={MODULE:"Selene.UI.Admin",initialize:function(){Self.initialized("Admin");$("body").append('<div id="Admin">');$("#MapApp > .Bar").prepend('<span class="Action Login">Spravovat</span>');$("#MapApp .Bar .Login").click(Self.UI.Admin.Mouse.click_login);return Self.UI.Admin;},let_inside:function(){if(!Self.UI.Admin.MENU)return Self.UI.Admin.send_away();$("#Admin").append('<div class="Bar"></div>').append('<div class="Menu"></div>').append('<div class="Content"></div>').append('<div class="Actions"></div>').append('<div class="Foot">Powered by Westico RTLS © 2009</div>').append('<div class="Trigger"></div>')
$("#Admin .Bar").append('<span class="Action Hide">Skrýt administraci »</span>').append('<span class="User">Správce <strong>root_admin</strong></span>').wrapInner('<div class="GUI">')
$("#Admin .Menu").append('<div class="Level0">').append('<div class="Level1">')
var menu_selected="define";var menu=$("#Admin .Menu .Level0")
$.each(Self.UI.Admin.MENU,function(ix,it){menu.append('<span class="Action Item '+$.string(ix).capitalize().str+'">'+it.name+'</span>').find('.Item:last').attr({item:ix})});menu.find(".Item[item]").click(Self.UI.Admin.Mouse.click_menu_item);if(Self.UI.Admin.restore)Self.UI.Admin.go(Self.UI.Admin.restore);$("#Admin .Trigger,#Admin .Bar .Hide.Action").click(Self.UI.Admin.Mouse.click_trigger);},send_away:function(){log("GO AWAY")
$("#Admin .Content").empty();$("body").removeClass("Failed").removeClass("Administering").removeClass("Administered")},restore:undefined,MENU:undefined,render_submenu:function(id){var menu=$("#Admin .Menu .Level1").empty();if(id)$.each(Self.UI.Admin.MENU[id].options,function(ix,it){menu.append('<span class="Action Item '+$.string(ix).capitalize().str+'">'+it.name+'</span>').find('.Item:last').addClass(id==ix?"Selected":"").attr({item:id+"/"+ix})});menu.find(".Item[item]").click(Self.UI.Admin.Mouse.click_menu_item);},navigate:function(place,bypass_history){var split=place.split("/");if(split.length<2){Self.UI.Admin.go(place);return false;}
if(!bypass_history)Self.History.add("admin/"+place);},auth:function(place){if(Self.UI.Admin.MENU)return true;Self.Data.Load.messenger("admin",{data:{},process:function(json,messenger){Self.UI.Admin.MENU=json.admin.menu;},restarts:false,finished:function(){Self.UI.Admin.let_inside();$("#MapApp .Bar .Login.Action").hide();$("body").addClass("Administered")
if(place)Self.UI.Admin.go(place);},stopped:Self.UI.Admin.send_away});return false;},go:function(place){if(!Self.UI.Admin.auth(place))return;var split=place.split("/");var menu=split[0];var class_name=$.string(menu).capitalize().str;$("body").removeClass("Administered").addClass("Administering")
if($("#Admin .Menu .Level0").length==0){Self.UI.Admin.restore=place;}else{$("#Admin .Menu .Level0 .Selected.Item").removeClass("Selected");$("#Admin .Menu .Level0 .Item."+class_name).addClass("Selected");Self.UI.Admin.render_submenu(menu);var submenu=split[1];if(submenu){var submenu_class_name=$.string(submenu).capitalize().str;$("#Admin .Menu .Level1 .Item."+submenu_class_name).addClass("Selected");var option=split[2];Self.UI.Admin[menu](submenu,option);}}
Self.UI.tooltips();},login:function(){Self.UI.Admin.auth("");},define:function(subject,option){var content="";content="Definice"
$("#Admin .Content").empty().html(content)},calibrate:function(subject,option){var content="";content="Kalibrace"
$("#Admin .Content").empty().html(content)},configure:function(subject,option){var content="";content="Konfigurace"
$("#Admin .Content").empty().html(content)}}
Selene.UI.Admin.Mouse={click_menu_item:function(e){var el=$(e.target);var item_id=el.attr("item");Self.UI.Admin.navigate(item_id);},click_trigger:function(e){var body=$("body");if(body.hasClass("Administering")){body.removeClass("Administering").addClass("Administered");}else if(body.hasClass("Administered")){body.removeClass("Administered").addClass("Administering");}},click_browser_member_edit:function(e){var el=$(e.target);var row=el.parents(".Member[member]");var type=row.hasClass("Group")?"group":"tag";var id=row.attr("member");var path="define/"+type+"/"+id;Self.UI.Admin.navigate(path);},click_login:function(e){var el=$(e.target);Self.UI.Admin.login();}}
Selene.UI.Updater={running:false,updating:false,object:undefined,option:function(index){return Self.UI.Updater._options[index];},options:function(){return Self.UI.Updater._options;},_options:undefined,render:function(){$("#AutoUpdateProgress").append('<div class="Progress"></div>');$("#AutoUpdate").append('<span class="Update" title="'+$$("AutoUpdateHint")+'">'+$$("AutoUpdate")+'</span> <span class="Time"></span> <div class="Slider"><div class="Handle"></div><div class="Bar"><div class="Interval"><div class="Progress"></div></div></div></div>').children(".Update").click(Self.UI.Mouse.click_update);if(!Self.UI.Updater.options()){var options=[];var index=0;$.each(Self.Current.updater.options,function(ix,it){options.push({index:index++,interval:it,label:$$("UpdateInterval-"+it)});});Self.UI.Updater._options=options;}
var steps=Self.UI.Updater.options();$("#AutoUpdate .Slider").slider("destroy").slider({axis:"horizontal",handle:".Handle",min:0,max:steps.length-1,steps:steps.length,slide:Self.UI.Updater.slider_slide,change:Self.UI.Updater.slider_change});if(!Self.UI.Updater.object){Self.UI.Updater.object=new OpenLayers.Tween(OpenLayers.Easing.Linear.easeIn);Self.UI.Updater.object.INTERVAL=1000;}
var valid_option=Self.UI.Updater.option_by_interval();var interval=(valid_option)?valid_option.interval:0;Self.UI.Updater.interval(interval);return true;},option_by_interval:function(interval){if(interval==undefined)interval=Self.UI.Updater.interval();var found=undefined;$.each(Self.UI.Updater._options,function(ix,it){if(interval==it.interval){found=ix;return false;}});if(found==undefined)return log("No match for interval "+interval,"option_by_interval",false);return Self.UI.Updater._options[found];},slider_slide:function(e,ui){var index=ui.value;var option=Self.UI.Updater.option(index);Self.UI.Updater.update_slider_text(option.label);},slider_change:function(e,ui){var index=ui.value;var option=Self.UI.Updater.option(index);Self.UI.Updater.interval(option.interval);},interval:function(value){if(value==undefined)return Self.Current.updater.interval;var option=Self.UI.Updater.option_by_interval(value);if(value==0){Self.UI.Updater.update_slider_text(option.label);Self.UI.Updater.update_slider(0);$("#Body").removeClass("AutoUpdated");Self.UI.Updater._stop();return value;}
if(option){Self.Current.updater.interval=value;Self.UI.Updater.update_slider_text(option.label);Self.UI.Updater.update_slider(option.index);Self.UI.Updater.running=true;$("#Body").addClass("AutoUpdated");Self.UI.Updater.update();return value;}
return false;},update_slider:function(index){var options=Self.UI.Updater.options();var bar_size=Self.Base.numerize($("#AutoUpdate .Slider").css("width"));var pos=bar_size/(options.length-1)*index+"px";$("#AutoUpdate .Slider .Handle").css({left:pos});var progress=100/(options.length-1)*index;$("#AutoUpdate .Bar .Interval").css({width:progress+"%"});},update_slider_text:function(label){$("#AutoUpdate .Time").html(label);},update:function(collect){if(Self.UI.Updater.updating)return false;log("»»» UPDATING UI");Self.UI.Updater.updating=true;Self.UI.Updater._reload_data(collect);return Self.UI.Updater.object;},_restart:function(){var interval=Self.UI.Updater.interval();if(!interval)return false;Self.UI.Updater.object.start(0,100,interval,{callbacks:{eachStep:function(){var value=(this.finish-this.begin)/this.duration*this.time;if(value>this.finish)value=this.finish;$("#AutoUpdateProgress .Progress, #AutoUpdate .Progress").css({width:value+"%"});},done:function(){if(Self.UI.Updater.running){log("»» "+interval+" second(s) passed since last UI update");Self.UI.Updater.update();}},start:function(){Self.UI.Updater.running=true;}}});Self.UI.Updater.object.play();return Self.UI.Updater.object;},_stop:function(){log("»»» No automatic update.");Self.UI.Updater.running=false;Self.UI.Updater.object.stop();},_reload_data:function(collect){Self.UI.Search.submit(collect,function(){Self.UI.Updater.updating=false;if(!Self.UI.Search.empty()&&Self.UI.Updater.running)Self.UI.Updater._restart()
else Self.UI.Updater._stop();Self.UI.tooltips();},function(){Self.UI.Updater.updating=false;Self.UI.Updater._stop();Self.UI.tooltips();});var path_ids=[];$.each(Self.Data.show.tag_paths,function(ix,it){path_ids.push(it);});if(path_ids.length)Self.Data.Load.path(path_ids.join(","),function(){});var detail_ids=[];$.each(Self.Data.show.tag_details,function(ix,it){detail_ids.push(it);});if(detail_ids.length)Self.Data.Load.detail(detail_ids.join(","),function(){},function(succ){if(succ){Self.UI.Popup.update_detail();}});Self.UI.tooltips();},search_paths_details:function(){}}
Selene.History={MODULE:"Selene.History",initialize:function(){Self.initialized("History");$.history.init(Self.History._page_load);return Self.History;},_page_load:function(id){if(id)Self.History.restore_state(id)
else Self.History.initial_state();},add:function(id){$.history.load(id);},initial_state:function(){log("History initial state")},_current:undefined,restore_state:function(id){if(id==Self.History.current)return;log("History state #"+id);Self.History.current=id;var split=id.split("/");switch(split[0]){case"browse":return Self.UI.Search.browser(true);case"search":return Self.UI.Search.basic(true);case"asearch":return Self.UI.Search.advanced(true);case"map":return Self.UI.Search.close(true);case"admin":return Self.UI.Admin.go(split.splice(1).join("/"));}}}
Selene.UI.Popup={hint:function(content,lonlat,size,anchor){if(Self.UI.Popup.object.hint)Self.UI.Popup.object.hint=Self.UI.Popup.object.hint.destroy();if(!content)return false;Self.UI.Popup.object.hint=new OpenLayers.Popup.Anchored('HintPopup',lonlat,size,content,anchor,false);Self.Map.object.addPopup(Self.UI.Popup.object.hint);return Self.UI.Popup.object.hint;},detail:function(content,lonlat,id){if(Self.UI.Popup.object.detail)Self.UI.Popup.object.detail=Self.UI.Popup.object.detail.destroy();if(content==undefined)return false;var size=new OpenLayers.Size(Self.Current.map.bubble.width,Self.Current.map.bubble.height);object=new OpenLayers.Popup('DetailPopup',lonlat,size,content,true,function(){Self.UI.Mouse.click_tag_marker(Self.UI.Mouse._last_click_marker);});if(id)$(object.div).attr("tag",id);Self.Map.object.addPopup(Self.UI.Popup.object.detail=object);Self.UI.Popup.set_detail_content(content,true,id);Self.Map.Control.pan({longitude:lonlat.lon,latitude:lonlat.lat});return object;},set_detail_content:function(content,animate,id){var object=Self.UI.Popup.object.detail;var nocontent=(content=="")?true:false;if(content=="")content='<div class="GUI"></div>';$(object.contentDiv).html(content);$("#DetailPopup .PathTrigger").click(function(e){Self.UI.Mouse.click_path_trigger(id);});if(content)Self.UI.Popup.set_tag_history(id);Self.UI.Popup.update_detail_size(animate,nocontent);$(object.contentDiv).find(".GUI .GUI .GUI").mouseover(Self.UI.Mouse.on_bubble).mouseout(Self.UI.Mouse.out_bubble);},set_tag_history:function(id){if(id!=$(Self.UI.Popup.object.detail.div).attr("tag"))return false;var path=Self.UI.Path.by_id(id);if(path){var str="";$.each(Self.Data.tag_path(id).positions,function(ix,it){if(ix>0){var pos=Self.Data.position(it.position);var loc=Self.Data.location(pos.location);var lay=Self.Data.layer(pos.layer);str+='<div class="PreviousPosition" title="'+lay.name+', '+loc.name+' ('+loc.id+')"><span class="Floor">'+lay.label+'</span> '+pos.name+' ('+pos.id+')</div>';}});$("#DetailPopup .History").css({backgroundColor:path.color}).children(".GUI").html(str).parent().show();return true;}else{$("#DetailPopup .History").hide();return false;}},update_detail_size:function(animate,nocontent){var object=Self.UI.Popup.object.detail;if(!object)return false;var inner_content=$(object.contentDiv).find(".GUI .GUI .GUI");var height=$(inner_content).height();$(object.contentDiv,object.groupDiv).css({height:(height+46)+"px",});var horizontal=$(object.contentDiv).width();var vertical=$(object.groupDiv).height();$(object.groupDiv).stop().css({left:-(horizontal/2)+"px",width:horizontal+"px",opacity:1});if(nocontent){$(object.groupDiv).css({top:-(vertical+26)+"px",opacity:0}).animate({opacity:0.5},1000);}else{if(animate){$(object.groupDiv).css({top:-(vertical+18)+"px",}).animate({top:-(vertical+28)+"px"},300);}else{$(object.groupDiv).css({top:-(vertical+28)+"px"});}}
return true;},hide_detail:function(){var object=Self.UI.Popup.object.detail;if(!object)return false;$(object.groupDiv).stop().fadeOut(150,function(){$(this).stop();object.hide();});return true;},update_detail:function(){var object=Self.UI.Popup.object.detail;if(!object)return false;if(!object.div)return false;var id=$(object.div).attr("tag");var tag=Self.Data.tag_detail(id);if(!tag)return false;var position=Self.Data.position(tag.position.position);Self.Map.Control.floor(position.layer);var content=Self.UI.tag_detail(id);Self.UI.Popup.set_detail_content(content,false,id);if(position.longitude!=object.lonlat.lon||position.latitude!=object.lonlat.lat){var lonlat=new OpenLayers.LonLat(position.longitude,position.latitude);var place=Self.Map.object.getLayerPxFromLonLat(lonlat);object.moveTo(place);}
return true;},display_mouse_position:function(e){Self.UI.Mouse._on_map_delay=window.setTimeout(OpenLayers.Function.bind(function(){window.clearTimeout(Self.UI.Mouse._on_map_delay);Self.UI.Mouse._on_map_delay=undefined;var place=e.xy;var location=Self.Map.object.getLonLatFromViewPortPx(place);switch(Self.Map.object.units){case"m":var source=Self.Map.PROJECTION;var destination=Self.Map.GEO_PROJECTION;var unit="m";var transformed_unit="°";break;case"degrees":var source=Self.Map.GEO_PROJECTION;var destination=Self.Map.PROJECTION;var unit="°";var transformed_unit="m";}
var transformed=location.clone().transform(source,destination);var hint="<div>"+$$("MouseCursor")+"</div>";hint+="<div>"+$$("Longitude")+": <strong>"+location.lon+unit+"</strong><em>"+transformed.lon+transformed_unit+"</em></div>";hint+="<div>"+$$("Latitude")+": <strong>"+location.lat+unit+"</strong><em>"+transformed.lat+transformed_unit+"</em></div>";Self.UI.Popup.hint(hint,location,new OpenLayers.Size(230,170));},Self,true),Self.Current.map.hint_delay);},object:{detail:undefined,hint:undefined}}
Selene.Data.Load={history:[],search:function(collect,callbacks){var query="";if(collect)query=Self.Data.Load._last_query=Self.UI.Search.collect_query()
else query=Self.Data.Load._last_query;var params={data:{query:query,},started:function(messenger){Self.UI.tooltips();if(callbacks.started)callbacks.started(messenger);},finished:function(messenger){Self.UI.Search.searching(false);if(!Self.Data.show.tags.length)if(!Self.UI.Search.is_open())Self.UI.Search.basic();if(Self.UI.Search.mode!="Browser"&&Self.Data.show.tags.length)Self.UI.Search.close();if(!Self.Current.map.layer)Self.Current.map.layer=Self.Data.ground_layer().id;Self.Map.Layer.add_rtls();Self.UI.render_floors();Self.UI.render_tags();Self.Map.floorize_markers(true);Self.UI.tooltips();if(callbacks.finished)callbacks.finished(messenger);},stopped:function(messenger){Self.UI.Search.searching(false);Self.UI.tooltips();if(callbacks.stopped)callbacks.stopped(messenger);}};return Self.Data.Load.messenger("search",params);},detail:function(id,init,callback){var query=Self.Data.Load.time_criteria();query.push("tag_id:"+id);Self.Data.Load._communicate("detail",{query:query.join(" "),},init,function(json){if(callback)callback(true);},function(reason){if(callback)callback(false);});},path:function(id,init,callback){var query=Self.Data.Load.time_criteria();query.push("tag_id:"+id);Self.Data.Load._communicate("path",{query:query.join(" ")},init,function(json){if(callback)callback(true);},function(reason){if(callback)callback(false);});},_auth_key:undefined,browse:function(id,callbacks){if(id!="")var data={tag_id:id};Self.Data.Load.messenger("browse",{data:data,started:callbacks.started,finished:callbacks.finished,stopped:callbacks.stopped});},time_criteria:function(){var query=Self.Data.Load._last_query.split(" ");var keep=[];$.each(query,function(ix,it){var bit=it.split(":");if(bit.length<2)return;switch(bit[0]){case"from":case"till":case"on":break;default:return;}
keep.push(bit.join(":"));});return keep;},_last_query:{},_last_query_url:{},_communicate:function(type,data,started,stopped){return Self.Data.Load.messenger(type,{data:data,started:started,finished:function(){stopped(true);},stopped:function(){stopped(false)}});},messengers:{},problematic:undefined,messenger:function(type,params){var url=Self.Current.url[type];if(!url)return false;var defaults={started_at:new Date(),url:url,data:{},started:undefined,finished:undefined,stopped:undefined,restarts:true,process:Self.Data.Load._process_response};var messenger=$.extend(defaults,params,{result:undefined,done:false,type:type,attempts:0,problems:[]});var started=messenger.started;var finished=messenger.finished;var stopped=messenger.stopped;$.extend(messenger,{start:function(){if(!messenger.done){messenger.started();var timeout=Self.Current.max_timeout;var autoupdate_interval=Self.UI.Updater.interval()*1000;if(autoupdate_interval)if(timeout>autoupdate_interval)timeout=autoupdate_interval-100;if(messenger.type=="search")Self.Data.Load._last_query_url=url;log("Load."+messenger.type+(messenger.attempts==0?"":"#"+messenger.attempts))
messenger.data.language=Self.Native.code();log(messenger);messenger.bag=$.ajax({dataType:"jsonp",url:messenger.url,data:messenger.data,timeout:timeout,success:messenger.finished,error:messenger.stopped});messenger.attempts++;return messenger;}},stop:function(){log("stop")
if(!messenger.done){messenger.bag.abort();messenger.stopped_at=new Date();messenger.done=true;}},started:function(){Self.UI.start_loading();if(started)started(messenger);},finished:function(json){messenger.done=true;Self.UI.stop_loading();$("body").removeClass("Failed");if(!json)return messenger.aborted();messenger.response=messenger.process(json,messenger.type);messenger.finished_at=new Date();messenger.duration=messenger.finished_at-messenger.started_at;Self.Data.Load.history.push({type:messenger.type,duration:messenger.duration,timestamp:messenger.finished_at});if(finished)finished(messenger);},stopped:function(error){var status=error.statusText;if(!status)status=error;messenger.status=status;log("Load."+messenger.type+"#"+(messenger.attempts-1)+" failed due to: "+status);log(messenger)
Self.UI.stop_loading();Self.UI._signalize_failed_loading(status);if(messenger.restarts)messenger.restart();if(stopped)stopped(messenger);},aborted:function(){Self.UI.stop_loading();$("body").removeClass("Failed");if(stopped)stopped(messenger);},restart:function(){if(!messenger.done){if(messenger.bag)messenger.bag.abort();var delay=Self.Current.connection_retry_delays[messenger.attempts-1];$("body").addClass("Failed");if(delay==undefined){log("Maximum of "+messenger.attempts+" attempts per messenger reached. No response. Dropping Load."+messenger.type+" messenger.");log(messenger)
messenger.stop();}else{log("Will try again in "+delay+" seconds...");messenger.timer=setTimeout(function(){if(!messenger.done){$("body").removeClass("Failed");messenger.restarted_at=new Date();messenger.start();}},delay*1000);}
messenger.retry_in=delay;var time=new Date();messenger.duration=time-(messenger.restarted_at?messenger.restarted_at:messenger.started_at);messenger.problems.push({duration:messenger.duration,error:messenger.status,retry_in:messenger.retry_in,time:time});Self.Data.Load.problematic=messenger;}}});if(!Self.Data.Load.messengers[type])Self.Data.Load.messengers[type]=[];var count=Self.Data.Load.messengers[type].push(messenger.start());if(count>1)Self.Data.Load.messengers[type][count-1-1].stop();if(count>5)Self.Data.Load.messengers[type].shift();return log(messenger);},_process_response:function(exchange,type){log(exchange,"EX")
if(exchange.error){var error=exchange.error;if(confirm($$("ServerReportedError")+" "+((error.permanent)?$$("ServerPermanentError"):"")+" "+$$("ServerErrorDetails"))){alert(type+" "+error.type+": "+error.message+" ("+error["class"]+")");}
return;}
if(type=="search"){var labels=Self.UI.labels.split(" ");$.each(exchange.tags,function(ix,it){exchange.tags[ix].tag.label=labels[ix];exchange.tags[ix].tag.index=ix;});}
if(exchange.layers)exchange.layers=Self.Base.order_by_floor(exchange.layers);var extract={servers:{},layers:{},results:{},tags:{},tag_paths:{},tag_details:{},positions:{},locations:{},eventconfigs:{},members:{},groups:{}};$.each(exchange,function(ix,it){if(typeof(extract[ix])!="object")return false;$.each(it,function(iix,iit){if(typeof(iit)=="object"){$.each(iit,function(type,object){if(extract[ix].length==undefined)extract[ix][object.id]=object
else extract[ix].push(object);});}else{extract[ix][iix]=iit;}});});$.each(extract,function(ix,it){var members=0;$.each(it,function(){members++});if(!members)delete extract[ix];});if(extract.members){log(Self.Data._store.members,"1")
var ids=[];if(extract.members)$.each(extract.members,function(ix,it){ids.push(it.id);});Self.Data.show.members=ids;log(Self.Data._store.members,"2")}
$.each(extract,function(ix,it){$.extend(Self.Data._store[ix],it);});if(type=="search"){var ids=[];if(extract.tags)$.each(extract.tags,function(ix,it){ids.push(it.id);});Self.Data.show.tags=ids;}
return extract;}};Selene.VERSION="0.10.3.r153";