
function getElementsByClass(oElm,strTagName,strClassName){var arrElements=(strTagName=="*"&&oElm.all)?oElm.all:oElm.getElementsByTagName(strTagName);var arrReturnElements=new Array();strClassName=strClassName.replace(/\-/g,"\\-");var oRegExp=new RegExp("(^|\\s)"+strClassName+"(\\s|$)");var oElement;for(var i=0;i<arrElements.length;i++){oElement=arrElements[i];if(oRegExp.test(oElement.className)){arrReturnElements[arrReturnElements.length]=oElement;}}
return arrReturnElements;}
function getElementsByAttribute(oElm,strTagName,strAttributeName,strAttributeValue){var arrElements=(strTagName=="*"&&oElm.all)?oElm.all:oElm.getElementsByTagName(strTagName);var arrReturnElements=new Array();var oAttributeValue=(typeof strAttributeValue!="undefined")?new RegExp("(^|\\s)"+strAttributeValue+"(\\s|$)"):null;var oCurrent;var oAttribute;for(var i=0;i<arrElements.length;i++){oCurrent=arrElements[i];oAttribute=oCurrent.getAttribute&&oCurrent.getAttribute(strAttributeName);if(typeof oAttribute=="string"&&oAttribute.length>0){if(typeof strAttributeValue=="undefined"||(oAttributeValue&&oAttributeValue.test(oAttribute))){arrReturnElements[arrReturnElements.length]=oCurrent;}}}
return arrReturnElements;}
var Metarr={verbosity:false,testDBFail:false,message:null,messages:{db:['warning: no db connection available!','warning: no metar entries available!'],test:['error: attempt to reference an incompatible object!']},urlPart:function(val){var dirs=location.pathname.split('/');var path='';switch(val){case'file':return dirs[dirs.length-1];break;case'directory':for(var i=0;i<dirs.length-1;i++){path+=dirs[i]+'/';}
return path;break;default:break;}},testIE:(function(){switch(true){case(/MSIE (5\.5|6\.)/.test(navigator.userAgent)):return 6;break;case(/MSIE (7\.|8\.)/.test(navigator.userAgent)):return 7;break;default:return false;break;}})(),testReference:{testReferenceSpecific:function(obj,type1,type2){var testMetarr=function(obj,type1){return(obj instanceof window[type1])?obj:(function(){throw'Metarr.'+type1+' - '+obj.CLASS_NAME})();}
var testOpenLayers=function(obj,type1){return(obj instanceof OpenLayers[type1])?obj:(function(){throw'OpenLayers.'+type1+' - '+obj.CLASS_NAME;})();}
var testOpenLayersLayer=function(obj,type1){if(obj.length&&obj.length==3){return(obj[0]instanceof OpenLayers.Layer[type1])?obj:(function(){throw'OpenLayers.Layer.'+type1+' - '+obj.CLASSNAME;})();}
else{return(obj instanceof OpenLayers.Layer[type1])?obj:(function(){throw'OpenLayers.Layer.'+type1+' - '+obj.CLASS_NAME;})();}}
var testOpenLayersControl=function(obj,type1){return(obj instanceof OpenLayers.Control[type1])?obj:(function(){throw'OpenLayers.Control.'+type1+' - '+obj.CLASS_NAME;})();}
var testList=[testMetarr,testOpenLayers,testOpenLayersLayer,testOpenLayersControl];try{return testList[type2](obj,type1);}
catch(exception){if(Metarr.verbosity){alert(Metarr.message.test[0]+" "+exception);}
return null;}},Metarr:function(obj,type){return this.testReferenceSpecific(obj,type,0);},OpenLayers:function(obj,type){return this.testReferenceSpecific(obj,type,1);},OpenLayersLayer:function(obj,type){return this.testReferenceSpecific(obj,type,2);},OpenLayersControl:function(obj,type){return this.testReferenceSpecific(obj,type,3);}},elementRemove:function(elementId){var element=document.getElementById(elementId);element.parentNode.removeChild(element);},elementDisplayToggle:function(elementId){var displayType=(typeof arguments[1]=='undefined')?'inline':arguments[1];var element=document.getElementById(elementId);if((element.style.display=='none')||((element.style.display=='')&&(element.offsetWidth==0))){element.style.display=displayType;}
else{element.style.display='none';}},elementMoveDuration:200,elementShake:function(elementId,pixels,cycles,direction){var element=document.getElementById(elementId);var elementStyle=null;var offset=0;var i=1;if(element&&element.style&&element.style.cssText){elementStyle=this.elementStyleSave(elementId,'margin'+direction);if(elementStyle!=null){if(elementStyle=='auto'){offset=0;}
else{offset=parseInt(elementStyle);}}}
setTimeout("Metarr.elementMove('"+elementId+"', 'margin"+direction+"',"+offset+", "+(offset+pixels)+")",this.elementMoveDuration*i);for(i=2;i<cycles-1;i++){setTimeout("Metarr.elementMove('"+elementId+"', 'margin"+direction+"', "+(offset+pixels)+", "+(offset-pixels)+")",this.elementMoveDuration*i);setTimeout("Metarr.elementMove('"+elementId+"', 'margin"+direction+"', "+(offset-pixels)+", "+(offset+pixels)+")",this.elementMoveDuration*++i);}
setTimeout("Metarr.elementMove('"+elementId+"', 'margin"+direction+"', "+(offset+pixels)+", "+offset+")",this.elementMoveDuration*i);if(elementStyle==null){offset='auto';setTimeout("Metarr.elementStyleReset('"+elementId+"', 'margin"+direction+"', '"+offset+"')",this.elementMoveDuration*(i+5));}
else{if(elementStyle=='auto'){setTimeout("Metarr.elementStyleReset('"+elementId+"', 'margin"+direction+"', '"+elementStyle+"')",this.elementMoveDuration*(i+5));}
else{setTimeout("Metarr.elementStyleReset('"+elementId+"', 'margin"+direction+"', "+offset+")",this.elementMoveDuration*(i+5));}}},elementMove:function(elementId,direction,pixel1,pixel2){new AJS.fx.Style(document.getElementById(elementId),direction,{duration:this.elementMoveDuration}).custom(pixel1,pixel2);},elementStyleSave:function(elementId,property){var elementStyleAll=document.getElementById(elementId).style;var elementStyleValue=null;var i=null;for(i in elementStyleAll){if(i==property){elementStyleValue=elementStyleAll[i];}}
return elementStyleValue;},elementStyleReset:function(elementId,property,value){document.getElementById(elementId).style[property]=value;},elementStyleComputed:function(el,styleProp){var x=document.getElementById(el);if(x.currentStyle)
var y=x.currentStyle[styleProp];else if(window.getComputedStyle)
var y=document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);return y;},imageIE6Png:function(parentElementId,elementId,classname){var elements=new Array();var image=null;elements=getElementsByClass(document.getElementById(parentElementId),elementId,classname);for(var i=0;i<elements.length;i++){image=this.imageGetSet(elements[i],1);this.imageGetSet(elements[i],image);}},imageSwap:function(elementId,val){var element=document.getElementById(elementId);this.imageGetSet(element,val);},imageGetSet:function(element,val){var testFilter=/^progid:DXImageTransform\.Microsoft\.AlphaImageLoader\(src='.*', sizingMethod='scale'\)$/i;var testBg=/^url[("']+(.*)[)"']+$/i;var testPng=/\.png/i;var getSource=function(){switch(true){case(!!element.src):return element.src;break;case(!!element.style&&!!element.style.backgroundImage):return element.style.backgroundImage;break;case(!!element.style&&!!element.style.filter):return element.style.filter;break;default:break;}}
var setSource=function(val){switch(true){case(Metarr.testIE==6&&testPng.test(val)):if(testFilter.test(val)){element.style.filter=val;}
else{if(testBg.test(val)){var first=val.indexOf("(");var last=val.indexOf(")");val=val.substring(first+1,last);if((/^['"].*['"]$/).test(val)){val=val.substring(1,val.length-1);}}
element.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+val+"', sizingMethod='scale')";}
element.style.backgroundImage="url('img/metarr/metarr/void1x1.gif')";break;case(Metarr.testIE!=6&&testPng.test(val)):if(testBg.test(val)){element.style.backgroundImage=val;}
else{element.style.backgroundImage="url('"+val+"')";}
break;default:element.src=val;break;}}
switch(true){case(typeof val=='number'):return getSource();break;case(typeof val=='string'):setSource(val);break;default:break;}}};var GB_ROOT_DIR=(function(){return location.protocol+'//'+location.host+Metarr.urlPart('directory')+'js/greybox/';})();function addEvent(arg,type,fn){var obj=(typeof arg=='string')?document.getElementById(arg):arg;if(obj.addEventListener){obj.addEventListener(type,fn,false);EventCache.add(obj,type,fn);}
else if(obj.attachEvent){obj["e"+type+fn]=fn;obj[type+fn]=function(){obj["e"+type+fn](window.event);}
obj.attachEvent("on"+type,obj[type+fn]);EventCache.add(obj,type,fn);}
else{obj["on"+type]=obj["e"+type+fn];}}
var EventCache=function(){var listEvents=[];return{listEvents:listEvents,add:function(node,sEventName,fHandler){listEvents.push(arguments);},flush:function(){var i,item;for(i=listEvents.length-1;i>=0;i=i-1){item=listEvents[i];if(item[0].removeEventListener){item[0].removeEventListener(item[1],item[2],item[3]);};if(item[1].substring(0,2)!="on"){item[1]="on"+item[1];};if(item[0].detachEvent){item[0].detachEvent(item[1],item[2]);};item[0][item[1]]=null;};}};}();function MapAssemble(){Proj4js.defs['EPSG:54004']='+proj=merc +lon_0=0 +k=1.000000 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs';OpenLayers.IMAGE_RELOAD_ATTEMPTS=3;OpenLayers.Util.onImageLoadErrorColor="transparent";var extent=new OpenLayers.Bounds(-3507026.95978,3962850.82298,4066498.95702,11536376.7398);var resolutions=[29585.89139200000100000000,14792.94569600000100000000,7396.47284800000030000000,3698.23642400000020000000,1849.11821200000010000000,924.55910600000004000000,462.27955300000002000000];var restrictTitle='Toggle pan-outside-maximum-bounds restriction';this.showRIAOverview=null;var testPanRestrict=new Array();this.createMap=function(){var options={projection:new OpenLayers.Projection('EPSG:54004'),displayProjection:new OpenLayers.Projection('EPSG:4326'),maxExtent:extent,restrictedExtent:extent,resolutions:resolutions,controls:[new OpenLayers.Control.MouseDefaults()],numZoomLevels:7,units:'m'};return new OpenLayers.Map("map",options);}
this.createLayer=function(){var options={layername:'bluemetarr',serviceVersion:'',type:'jpg',attribution:'&copy; <a target="_blank" href="http://earthobservatory.nasa.gov">NASA</a>, <a target="_blank" href="http://www.esri.com/data/">ESRI</a> & <a target="_blank" href="http://weather.noaa.gov">NOAA</a>'};return new OpenLayers.Layer.TMS("Blue Marble","img/metarr/tiles",options);}
this.createOverview=function(){var options={maxExtent:extent,resolutions:resolutions,units:'m'};var size=new OpenLayers.Size;size.h=256/2;size.w=256/2;var controlOptions={mapOptions:options,size:size};return new OpenLayers.Control.OverviewMap(controlOptions);}
this.createPanel=function(map,type1){var referenceMap=Metarr.testReference.OpenLayers(map,type1);var options={div:document.getElementById('panelContainer2')};var panel=new OpenLayers.Control.Panel(options);var controlOptions={displayClass:'zoomExtent',title:'Zoom to full extent'}
var zoomExtent=new OpenLayers.Control.ZoomToMaxExtent(controlOptions);controlOptions={displayClass:'navigationHistory'}
var navHistory=new OpenLayers.Control.NavigationHistory(controlOptions);referenceMap.addControl(navHistory);controlOptions={type:OpenLayers.Control.TYPE_TOGGLE,displayClass:'restrictPan',title:restrictTitle}
var restrictPan=new OpenLayers.Control(controlOptions);panel.addControls([zoomExtent,navHistory.next,navHistory.previous,restrictPan]);return panel;}
this.createMarker=function(map,type1,layer,type2){var referenceMap=Metarr.testReference.OpenLayers(map,type1);var referenceLayer=Metarr.testReference.OpenLayersLayer(layer,type2);var marker=[new OpenLayers.Layer.Markers('Metar Stations - Category 1',{minResolution:0,maxResolution:29000}),new OpenLayers.Layer.Markers('Metar Stations - Category 2',{minResolution:0,maxResolution:4000}),new OpenLayers.Layer.Markers('Metar Stations - Category 3',{minResolution:0,maxResolution:1500})];setAddLayer(referenceMap,referenceLayer,marker);return marker;}
var setAddLayer=function(referenceMap,referenceLayer,referenceMarker){referenceMap.addLayers([referenceLayer,referenceMarker[0],referenceMarker[1],referenceMarker[2]]);}
this.createControl=function(map,type1,overview,type2,panel,type3,marker,type4){var referenceMap=Metarr.testReference.OpenLayers(map,type1);var referenceOverview=Metarr.testReference.OpenLayersControl(overview,type2);var referencePanel=Metarr.testReference.OpenLayersControl(panel,type3);var referenceMarker=Metarr.testReference.Metarr(marker,type4);var permalinkElement='permalinkItem';var time=null;if(Metarr.testDBFail){time=Metarr.message;}
else{time=referenceMarker.time;}
var createControlHud=function(){var element=null;var attribute=null;element=document.createElement('div');attribute=document.createAttribute('id');attribute.nodeValue='hudItem';element.setAttributeNode(attribute);attribute=document.createAttribute('title');attribute.nodeValue='Show selection/overview screen'
element.setAttributeNode(attribute);document.getElementById('panelContainer1').appendChild(element);}
var createDisplayTime=function(val){var elementDisplayCopyright=new Array();var elementDisplayTime=null;var element=null;var attribute=null;var text=null;element=document.createElement('div');attribute=document.createAttribute('id');attribute.nodeValue='displayTime';element.setAttributeNode(attribute);text=document.createTextNode(val);element.appendChild(text);elementDisplayCopyright=getElementsByClass(document.getElementById('map_OpenLayers_ViewPort'),'div','displayCopyright');document.getElementById('map_OpenLayers_ViewPort').insertBefore(element,elementDisplayCopyright[0].nextSibling);elementDisplayTime=document.getElementById('displayTime');elementDisplayTime.style.zIndex=elementDisplayCopyright[0].style.zIndex;}
var setRestrictPanelId=function(){var regex=new RegExp(restrictTitle);var obj=referenceMap.getControlsBy('title',regex)[0];obj.panel_div.id='restrictPanItem';}
referenceMap.addControl(referencePanel);setRestrictPanelId();referenceMap.addControl(new OpenLayers.Control.LayerSwitcher());referenceMap.addControl(new OpenLayers.Control.PanZoomBar());referenceMap.addControl(new OpenLayers.Control.NavToolbar());createControlHud();referenceMap.addControl(new OpenLayers.Control.Permalink(permalinkElement));referenceMap.addControl(referenceOverview);referenceMap.addControl(new OpenLayers.Control.MousePosition({displayClass:'displayCoordinates'}));referenceMap.addControl(new OpenLayers.Control.Attribution({displayClass:'displayCopyright'}));createDisplayTime(time);document.getElementById(permalinkElement).title='Permalink current view';}
this.setRIAOverview=function(overview,type1){var referenceOverview=Metarr.testReference.OpenLayersControl(overview,type1);return(function(){referenceOverview.update();referenceOverview.maximizeControl();});}
var setRIAEvent=function(map,type1,marker,type2,layer,type3,hudAssemble,type4){var referenceMap=Metarr.testReference.OpenLayers(map,type1);var referenceMarker=Metarr.testReference.Metarr(marker,type2);var referenceLayer=Metarr.testReference.OpenLayersLayer(layer,type3);var referenceHudAssemble=Metarr.testReference.Metarr(hudAssemble,type4);var setMapEvent=function(){if(!Metarr.testDBFail){referenceMap.events.register('movestart',referenceMarker,referenceMarker.setPreviousZoom);referenceMap.events.register('zoomend',referenceMarker,referenceMarker.modifyMarkerEvent);if(Metarr.testIE==6){referenceMap.events.register('changelayer',referenceMarker,referenceMarker.fixMarkerIE6PngEvent);}}
referenceMap.events.register('movestart',referenceMap,testPanRestrictEvent(referenceMap));referenceMap.events.register('zoomend',referenceMap,testPanRestrictEvent(referenceMap));referenceMap.events.register('move',referenceMap,testPanRestrictEvent(referenceMap));referenceMap.events.register('moveend',referenceMap,testPanRestrictEvent(referenceMap));}
var setRestrictEvent=function(){var regex=new RegExp(restrictTitle);var restrictPan=referenceMap.getControlsBy('title',regex)[0];restrictPan.events.register('activate',restrictPan,function(){referenceMap.setOptions({restrictedExtent:null})});restrictPan.events.register('deactivate',restrictPan,function(){referenceMap.setOptions({restrictedExtent:extent})});}
var setLayerEvent=function(){referenceLayer.events.register('loadstart',referenceHudAssemble,referenceHudAssemble.layerLoadEvent);referenceLayer.events.register('loadend',referenceHudAssemble,referenceHudAssemble.layerLoadEvent);}
setMapEvent();setRestrictEvent();setLayerEvent();}
var testPanRestrictEvent=function(referenceMap){return(function(event){var pixels=null;switch(true){case(event.type=='movestart'):testPanRestrict[0]='t';break;case(event.type=='zoomend'):testPanRestrict[1]='t';break;case(event.type=='move'):testPanRestrict[2]++;break;case(event.type=='moveend'):if(testPanRestrict.join('').indexOf('ff')==0&&referenceMap.restrictedExtent!=null){switch(true){case(testPanRestrict[2]<=3):pixels=6;break;case(testPanRestrict[2]<=6):pixels=4;break;default:pixels=2;break;}
Metarr.elementShake('restrictPanItem',pixels,8,'Left');}
for(var i=0;i<testPanRestrict.length-1;i++){testPanRestrict[i]='f';}
testPanRestrict[i]=0;break;default:break;}});}
this.finishSetup=function(map,type1,marker,type2,layer,type3,hudAssemble,type4,overview,type5){setRIAEvent(map,type1,marker,type2,layer,type3,hudAssemble,type4);this.showRIAOverview=this.setRIAOverview(overview,type5);}}
function MapFill(map,type1,marker,type2){var _referenceMap=null;var _referenceMarker=null;var _parseZoom=null;var _previousZoom=null;this.iconSource=null;this.iconSize=null;this.time=null;this.code=null;this.name=null;this.temperature=null;this.weather=null;this.lon=null;this.lat=null;this.iconInstance=null;this.marker_cnt=null;var setReference=function(map,type1,marker,type2){_referenceMap=Metarr.testReference.OpenLayers(map,type1);_referenceMarker=Metarr.testReference.OpenLayersLayer(marker,type2);}
var setParseZoom=function(){if(_parseZoom===null){_parseZoom=0;var queryString=location.search.substr(1).split("&");for(var i=0;i<queryString.length;i++){if(queryString[i].search(/zoom=[0-6]/)==0)
_parseZoom=parseInt(queryString[i].substr(5));}}}
setReference(map,type1,marker,type2);setParseZoom();try{this.setMapFillContent();if(typeof this.temperature[0]=='undefined'){throw"noMetarsException";}}
catch(exception){if(exception=="noMetarsException"){Metarr.testDBFail=true;Metarr.message=Metarr.messages.db[1];}
else{Metarr.testDBFail=true;Metarr.message=Metarr.messages.db[0];}
if(Metarr.verbosity){alert(Metarr.message);}}
this.setMapFillStaticContent();var getValidatedZoom=function(val){switch(true){case(val=='parseZoom'&&_parseZoom!==null):return _parseZoom;break;case(val=='getZoom'&&_referenceMap!==null):return _referenceMap.getZoom();break;case(String(val).search(/[0-6]/)==0):return val;break;default:alert('no valid zoomlevel!');return null;break;}}
this.getIconZoom=function(val){var zoom=getValidatedZoom(val);var iconZoom=null;switch(zoom){case 0:case 1:iconZoom=0;break;case 2:case 3:iconZoom=1;break;case 4:case 5:iconZoom=2;break;case 6:iconZoom=3;break;default:break;}
return iconZoom;}
this.createMarker=function(val){var fixPosition=-0.18;var j_cnt=0;this.iconInstance=[];this.marker_cnt=[];var iconZoom=this.getIconZoom(val);var size=new OpenLayers.Size(this.iconSize[iconZoom][0],this.iconSize[iconZoom][1]);var offset=new OpenLayers.Pixel(-size.w/2,-size.h/2);for(var i=0;i<this.iconSource[iconZoom].length;i++){this.iconInstance.push(new OpenLayers.Icon(this.iconSource[iconZoom][i],size,offset));}
for(var i=0;i<this.lon.length;i++){for(var j=0;j<this.lon[i].length;j++){this.weather[j_cnt]=(this.weather[j_cnt]=='?')?'12':this.weather[j_cnt];var iconClone=this.iconInstance[this.weather[j_cnt]].clone();this.marker_cnt.push(new OpenLayers.Marker(new OpenLayers.Layer.SphericalMercator.forwardMercator(this.lon[i][j],this.lat[i][j]+fixPosition),iconClone));this.setMarkerDetailEvent();_referenceMarker[i].addMarker(this.marker_cnt[(this.marker_cnt.length)-1]);j_cnt++;}}}
this.setMarkerDetailEvent=function(){this.marker_cnt[(this.marker_cnt.length)-1].events.register('click',this.marker_cnt[(this.marker_cnt.length)-1],markerDetailEvent);}
var markerDetailEvent=function(event){var detailUrl='../../../backend/deliver.php?detailed=';var detailTitle='Details for: ';var name=event.element.getAttribute('title');var code=event.element.childNodes[1].lastChild.getAttribute('id');GB_showCenter(detailTitle+name,detailUrl+code);}
this.createMarkerLabel=function(val){var element=null;var element2=null;var element3=null;var text=null;var attribute=null;var valueBg=null;var value=null;for(var i=0;i<this.marker_cnt.length;i++){if(isNaN(Number(this.temperature[i]))){valueBg=this.temperature[i];value=String.fromCharCode(160,173);}
else{valueBg=value=this.temperature[i]+'°';}
element3=document.createElement('div');attribute=document.createAttribute('class');attribute.nodeValue='markerLabelContainer';element3.setAttributeNode(attribute);element2=document.createElement('div');text=document.createTextNode(valueBg);element2.appendChild(text);attribute=document.createAttribute('class');attribute.nodeValue='markerLabelBg';element2.setAttributeNode(attribute);element=document.createElement('div');text=document.createTextNode(value);element.appendChild(text);attribute=document.createAttribute('class');attribute.nodeValue='markerLabel';element.setAttributeNode(attribute);attribute=document.createAttribute('id');attribute.nodeValue=this.code[i];element.setAttributeNode(attribute);element3.appendChild(element2);element3.appendChild(element);document.getElementById(this.marker_cnt[i].icon.imageDiv.id).appendChild(element3);attribute=document.createAttribute('class');attribute.nodeValue='markerIcon';document.getElementById(this.marker_cnt[i].icon.imageDiv.id).firstChild.setAttributeNode(attribute);attribute=document.createAttribute('title');attribute.nodeValue=this.name[i];document.getElementById(this.marker_cnt[i].icon.imageDiv.id).setAttributeNode(attribute);}
this.modifyMarkerLabel(val);}
var fixMarkerLabel=function(){var zoom=_referenceMap.getZoom();_referenceMap.zoomTo(6);_referenceMap.zoomTo(zoom);}
this.modifyMarker=function(val){var oldUrl=null;var newUrl=null;var iconZoom=this.getIconZoom(val);var zoom=_referenceMap.getZoom();if(_previousZoom!=zoom){var size=new OpenLayers.Size(this.iconSize[iconZoom][0],this.iconSize[iconZoom][1]);var offset=new OpenLayers.Pixel(-size.w/2,-size.h/2);for(var i=0;i<this.marker_cnt.length;i++){this.marker_cnt[i].icon.setSize(size);this.marker_cnt[i].icon.offset=offset;oldUrl=this.marker_cnt[i].icon.url;newUrl=oldUrl.replace(/\/\d\dpx\//,"/"+this.iconSize[iconZoom][0]+"px/");this.marker_cnt[i].icon.setUrl(newUrl);if(Metarr.testIE==6){this.fixMarkerIE6Png(i);}}}}
this.modifyMarkerLabel=function(val){var elements=new Array();var iconZoom=this.getIconZoom(val);var fontsize=(iconZoom==0)?0.75:(iconZoom+1)/2
var shadow=(iconZoom<2)?1:2;var spacer=iconZoom;var height=null;elements=getElementsByClass(document.getElementById('map_OpenLayers_Container'),'div','markerLabel');for(var i=0;i<elements.length;i++){elements[i].style.fontSize=fontsize+"em";elements[i].style.paddingTop=shadow+"px";elements[i].style.paddingLeft=shadow+"px";elements[i].style.top=spacer+"px";}
elements=getElementsByClass(document.getElementById('map_OpenLayers_Container'),'div','markerLabelBg');for(var i=0;i<elements.length;i++){elements[i].style.fontSize=fontsize+"em";elements[i].style.paddingBottom=shadow+"px";elements[i].style.paddingRight=shadow+"px";elements[i].style.top=spacer+"px";}
height=elements[0].offsetHeight;elements=getElementsByClass(document.getElementById('map_OpenLayers_Container'),'div','markerLabelContainer');for(var i=0;i<elements.length;i++){elements[i].style.height=(height+shadow)+"px";}}
this.setPreviousZoom=function(event){_previousZoom=_referenceMap.getZoom();}
this.modifyMarkerEvent=function(event){this.modifyMarker('getZoom');this.modifyMarkerLabel('getZoom');}
this.fixMarkerIE6Png=function(i){OpenLayers.Util.modifyAlphaImageDiv(document.getElementById(this.marker_cnt[i].icon.imageDiv.id),this.marker_cnt[i].icon.imageDiv.id,null,null,null,null,null,'crop',null);}
this.fixMarkerIE6PngEvent=function(event){switch(true){case(event.layer.name.indexOf('Category 1')!=-1&&event.layer.visibility):for(var i=0;i<this.lon[0].length;i++){this.fixMarkerIE6Png(i);}
break;case(event.layer.name.indexOf('Category 2')!=-1&&event.layer.visibility):var j=this.lon[0].length;for(var i=0;i<this.lon[1].length;i++){this.fixMarkerIE6Png(i+j);}
break;case(event.layer.name.indexOf('Category 3')!=-1&&event.layer.visibility):var j=this.lon[0].length+this.lon[1].length;for(var i=0;i<this.lon[2].length;i++){this.fixMarkerIE6Png(i+j);}
break;default:break;}}
this.finishSetup=function(){if(!Metarr.testDBFail){this.createMarker('parseZoom');fixMarkerLabel();this.createMarkerLabel('parseZoom');}
else{fixMarkerLabel();}}}
MapFill.prototype.setMapFillStaticContent=function(){var iconPath='img/metarr/icons/';this.iconSize=[[24,18],[36,27],[48,36],[96,72]];this.iconSource=[[iconPath+'24px/cloudy.png',iconPath+'24px/fair.png',iconPath+'24px/flurries.png',iconPath+'24px/fog.png',iconPath+'24px/lshowers.png',iconPath+'24px/mcloudy.png',iconPath+'24px/pcloudy.png',iconPath+'24px/rainsnow.png',iconPath+'24px/showers.png',iconPath+'24px/snowshow.png',iconPath+'24px/sunny.png',iconPath+'24px/thunshowers.png',iconPath+'24px/unknown.png'],[iconPath+'36px/cloudy.png',iconPath+'36px/fair.png',iconPath+'36px/flurries.png',iconPath+'36px/fog.png',iconPath+'36px/lshowers.png',iconPath+'36px/mcloudy.png',iconPath+'36px/pcloudy.png',iconPath+'36px/rainsnow.png',iconPath+'36px/showers.png',iconPath+'36px/snowshow.png',iconPath+'36px/sunny.png',iconPath+'36px/thunshowers.png',iconPath+'36px/unknown.png'],[iconPath+'48px/cloudy.png',iconPath+'48px/fair.png',iconPath+'48px/flurries.png',iconPath+'48px/fog.png',iconPath+'48px/lshowers.png',iconPath+'48px/mcloudy.png',iconPath+'48px/pcloudy.png',iconPath+'48px/rainsnow.png',iconPath+'48px/showers.png',iconPath+'48px/snowshow.png',iconPath+'48px/sunny.png',iconPath+'48px/thunshowers.png',iconPath+'48px/unknown.png'],[iconPath+'96px/cloudy.png',iconPath+'96px/fair.png',iconPath+'96px/flurries.png',iconPath+'96px/fog.png',iconPath+'96px/lshowers.png',iconPath+'96px/mcloudy.png',iconPath+'96px/pcloudy.png',iconPath+'96px/rainsnow.png',iconPath+'96px/showers.png',iconPath+'96px/snowshow.png',iconPath+'96px/sunny.png',iconPath+'96px/thunshowers.png',iconPath+'96px/unknown.png']];}
function HudAssemble(){this.showRIA=null;var fixLayerLoadIE6DBFail=null;var testLayerLoading=false;var toggleHud=function(event){Metarr.elementDisplayToggle('hudBg','block');if(Metarr.elementStyleComputed('hudBg','display')=='block'){AJS.fx.fadeIn(document.getElementById('hudBg'),{duration:300,from:0.0,to:0.7,onComplete:function(){Metarr.elementDisplayToggle('hud','block');}});}
else{Metarr.elementDisplayToggle('hud','block');if(testLayerLoading==false){Metarr.elementShake('hudItem',4,8,'Left');}}}
var testPermalink=function(){var queryString=location.search.substr(1);if(queryString.search(/zoom=.*lat=.*lon=.*layers=.*/)==-1){toggleHud();}}
testPermalink();var toggleHudContent=function(elementId){var hudContents=new Array();return(function(event){var element=null;var hudContent=null;if(hudContents.length==0){hudContent=document.getElementById('hudContent').firstChild;while(hudContent!=null){if(hudContent.nodeName=='DIV'){hudContents.push(hudContent);}
hudContent=hudContent.nextSibling;}}
element=document.getElementById(elementId);for(var i=1;i<hudContents.length;i++){if(hudContents[i].id==elementId){hudContents[i].style.display='block';}
else{hudContents[i].style.display='none';}}});}
var toggleHudPreload=function(event){Metarr.elementDisplayToggle('hudPreload','block');if(testLayerLoading==false||this.id=='hudPreload'){Metarr.elementShake('hudItem',4,8,'Left');}}
this.layerLoadEvent=function(event){switch(true){case(event.type=='loadstart'):testLayerLoading=true;break;case(event.type=='loadend'):testLayerLoading=false;if(Metarr.elementStyleComputed('hudPreload','display')=='block'||document.getElementById('hudPreload').style.display=='block'){toggleHudPreload();}
break;default:break;}}
this.setRIA=function(map,type1,mapAssemble,type2,hudFill,type3){var referenceMap=Metarr.testReference.OpenLayers(map,type1);var referenceMapAssemble=Metarr.testReference.Metarr(mapAssemble,type2);var referenceHudFill=Metarr.testReference.Metarr(hudFill,type3);return(function(id,type){var lonlat=null;var zoom=null;var getXY=function(val){var fixPosition=-0.18;var lonlat=val.split('|');return new OpenLayers.Layer.SphericalMercator.forwardMercator(parseFloat(lonlat[0]),parseFloat(lonlat[1])+fixPosition);}
switch(true){case(type=='region'):lonlat=referenceHudFill.regionLonLatZoom[id][0];zoom=referenceHudFill.regionLonLatZoom[id][1];break;case(type=='city'):if(typeof id=='number'){lonlat=referenceHudFill.cityCatLon[id]+'|'+referenceHudFill.cityCatLat[id];}
else{lonlat=id;}
zoom=6;break;default:return;break;}
referenceMap.setCenter(getXY(lonlat),zoom);if(Metarr.testDBFail&&Metarr.testIE==6){setTimeout(fixLayerLoadIE6DBFail,10);}
referenceMapAssemble.showRIAOverview();if(testLayerLoading==true){toggleHudPreload();}
toggleHud();});}
setFixLayerLoadIE6DBFail=function(layer,type1){var referenceLayer=Metarr.testReference.OpenLayersLayer(layer,type1);return(function(){referenceLayer.redraw();});}
var setHudEvent=function(){addEvent('hudMenuLogo','click',toggleHudContent('hudContentWeather'));addEvent('hudMenuAbout','click',toggleHudContent('hudContentAbout'));addEvent('hudMenuContact','click',toggleHudContent('hudContentContact'));addEvent('hudClose','click',toggleHud);if(document.getElementById('hudItem')){addEvent('hudItem','click',toggleHud);}
addEvent('hudPreload','click',toggleHudPreload);}
this.finishSetup=function(map,type1,mapAssemble,type2,hudFill,type3,layer,type4){this.showRIA=this.setRIA(map,type1,mapAssemble,type2,hudFill,type3);setHudEvent();fixLayerLoadIE6DBFail=setFixLayerLoadIE6DBFail(layer,type4);}}
function HudFill(){var referenceSelf=this;this.countryAZ=null;this.cityAZ=null;this.cityCat=null;this.cityCatLon=null;this.cityCatLat=null;try{this.setHudFillContent();}
catch(exception){Metarr.testDBFail=true;Metarr.message=Metarr.messages.db[0];if(Metarr.verbosity){alert(Metarr.message);}}
this.setHudFillStaticContent();this.createSelection=function(hudAssemble,type1){var referenceHudAssemble=Metarr.testReference.Metarr(hudAssemble,type1);var selectionCountry=document.selection['country'];var selectionCity=document.selection['city'];var setSelectionEvent=function(){addEvent('city','click',selectionClickEvent(referenceHudAssemble));addEvent('country','change',selectionChangeEvent());}
if(!Metarr.testDBFail){for(var i=0;i<this.countryAZ.length;i++){selectionCountry.options[i]=new Option(this.countryAZ[i],'');}
setSelectionEvent();}
else{selectionCountry.options[0]=new Option(Metarr.message,'');selectionCity.options[0]=new Option(Metarr.message,'');selectionCity.options[0].style.textDecoration='none';selectionCity.options[0].style.color='black';selectionCity.style.textDecoration='none';}}
var selectionClickEvent=function(referenceHudAssemble){return(function(event){var id=document.selection['city'].options[document.selection['city'].selectedIndex].value;if(id!='selectFirst'){referenceHudAssemble.showRIA(id,'city');}
else{document.selection['country'].selectedIndex=0;referenceSelf.modifySelection(0);}});}
var selectionChangeEvent=function(){return(function(event){var id=document.selection['country'].selectedIndex;referenceSelf.modifySelection(id);});}
this.modifySelection=function(val){var cityEntry=null;var selectionCity=document.selection['city'];var getCityEntry=function(val){var firstDelimiter=val.indexOf('|');var cityText=val.substring(0,firstDelimiter);var cityValue=val.substring(firstDelimiter+1,val.length);return new Array(cityText,cityValue);}
selectionCity.options.length=0;for(var i=0;i<this.cityAZ[val].length;i++){cityEntry=getCityEntry(this.cityAZ[val][i]);selectionCity.options[i]=new Option(cityEntry[0],cityEntry[1]);}}
this.createMap=function(hudAssemble,type1){var referenceHudAssemble=Metarr.testReference.Metarr(hudAssemble,type1);var setMapEvent=function(){var regions=document.getElementById('hudMap').getElementsByTagName('area');for(var i=0;i<regions.length-1;i++){addEvent(regions[i],'click',mapClickEvent.call(regions[i],referenceHudAssemble));addEvent(regions[i],'mouseover',mapMouseOverEvent.call(regions[i]));}
addEvent(regions[regions.length-1],'mouseover',mapMouseOverEvent.call(regions[regions.length-1]));}
setMapEvent();}
var mapClickEvent=function(referenceHudAssemble){var id=parseInt(this.id.substring(10))-1;return(function(event){referenceHudAssemble.showRIA(id,'region');});}
var mapMouseOverEvent=function(){var regionId=parseInt(this.id.substring(10));var regionOverlayPath='img/metarr/hud/bluemetarr/';return(function(event){Metarr.imageSwap('hudMapBg',regionOverlayPath+'region_'+regionId+'.png');});}
this.createMarker=function(map,type1,marker,type2,hudAssemble,type3){if(!Metarr.testDBFail){var referenceMap=Metarr.testReference.OpenLayers(map,type1);var referenceMarker=Metarr.testReference.Metarr(marker,type2);var referenceHudAssemble=Metarr.testReference.Metarr(hudAssemble,type3);var element=null;var element2=null;var element3=null;var element4=null;var attribute=null;var text=null;var pixel=null;var valueBg;var value;var getPixel=function(lon,lat){var pixel=new Array(2);var ratio=600/256;var fixPosition=[-1.4,0.8];var topleft=(map.getPixelFromLonLat(new OpenLayers.Layer.SphericalMercator.forwardMercator(-31.5,71.5)));var marker=(map.getPixelFromLonLat(new OpenLayers.Layer.SphericalMercator.forwardMercator(lon+fixPosition[0],lat+fixPosition[1])));pixel[0]=parseInt((ratio*(marker.x-topleft.x)));pixel[1]=parseInt((ratio*(marker.y-topleft.y)));return pixel;}
this.setCityCatContent(referenceMarker);var lonlat=referenceMap.getCenter();var zoom=referenceMap.getZoom();referenceMap.zoomTo(0);for(var i=0;i<this.cityCatLon.length;i++){if(isNaN(Number(referenceMarker.temperature[i]))){valueBg=referenceMarker.temperature[i];value=String.fromCharCode(160,173);}
else{valueBg=value=referenceMarker.temperature[i]+'°';}
element=document.createElement('div');attribute=document.createAttribute('id');attribute.nodeValue='hudMarker'+i;element.setAttributeNode(attribute);attribute=document.createAttribute('class');attribute.nodeValue='hudMarker';element.setAttributeNode(attribute);element.style.position='absolute';pixel=getPixel(this.cityCatLon[i],this.cityCatLat[i]);element.style.left=pixel[0]+"px";element.style.top=pixel[1]+"px";attribute=document.createAttribute('title');attribute.nodeValue=this.cityCat[i];element.setAttributeNode(attribute);element2=document.createElement('div');attribute=document.createAttribute('class');attribute.nodeValue='hudMarkerIcon';element2.setAttributeNode(attribute);element2.style.backgroundImage="url('"+referenceMarker.iconSource[0][referenceMarker.weather[i]]+"')";element3=document.createElement('div');attribute=document.createAttribute('class');attribute.nodeValue='hudMarkerLabelBg';element3.setAttributeNode(attribute);text=document.createTextNode(valueBg);element3.appendChild(text);element4=document.createElement('div');attribute=document.createAttribute('class');attribute.nodeValue='hudMarkerLabel';element4.setAttributeNode(attribute);text=document.createTextNode(value);element4.appendChild(text);element.appendChild(element2);element.appendChild(element3);element.appendChild(element4);document.getElementById('hudMap').appendChild(element);addEvent(element,'click',markerClickEvent.call(element,referenceHudAssemble));}
referenceMap.setCenter(lonlat,zoom);if(Metarr.testIE==6){Metarr.imageIE6Png('hudMap','div','hudMarkerIcon');}}}
this.setCityCatContent=function(referenceMarker){this.cityCat=[];this.cityCatLon=[];this.cityCatLat=[];for(var i=0;i<referenceMarker.lon.length-2;i++){for(var j=0;j<referenceMarker.lon[i].length;j++){this.cityCat.push(referenceMarker.name[j]);this.cityCatLon.push(referenceMarker.lon[i][j]);this.cityCatLat.push(referenceMarker.lat[i][j]);}}}
var markerClickEvent=function(referenceHudAssemble){var id=parseInt(this.id.substring(9));return(function(event){referenceHudAssemble.showRIA(id,'city');});}}
HudFill.prototype.setHudFillStaticContent=function(){this.regionLonLatZoom=[['-3.81376|40.09765',4],['3.1296|46.97421',4],['9.57463|51.24536',4],['18.11264|60.96519',3],['-3.88021|53.69932',4],['27.7968|38.79698',4],['25.02278|56.61753',4],['30.35488|58.83371',3],['-15.05935|66.71377',3],['18.02959|51.3599',4],['28.29513|47.94301',4],['16.08611|44.72265',4],['11.9666|41.93435',4]];}
function main(){if(Metarr.urlPart('file').indexOf('devel')==-1){var mapAssemble=null,map=null,layer=null,overview=null,panel=null,marker=null,hudAssemble=null,hudFill=null;}
else{window.mapAssemble=null,window.map=null,window.layer=null,window.overview=null,window.panel=null,window.marker=null,window.hudAssemble=null,window.hudFill=null;}
function mainPreload(event){if(typeof event=='string'){var iconPath='img/metarr/';AJS.preloadImages(iconPath+'icons/36px/pcloudy.png',iconPath+'metarr/hudMenu/about.gif',iconPath+'metarr/hudMenu/close.gif',iconPath+'metarr/hudMenu/contact.gif',iconPath+'metarr/hudMenu/lquote.gif',iconPath+'metarr/hudMenu/rquote.gif',iconPath+'hud/bluemetarr/region_1.png',iconPath+'hud/bluemetarr/region_2.png',iconPath+'hud/bluemetarr/region_3.png',iconPath+'hud/bluemetarr/region_4.png',iconPath+'hud/bluemetarr/region_5.png',iconPath+'hud/bluemetarr/region_6.png',iconPath+'hud/bluemetarr/region_7.png',iconPath+'hud/bluemetarr/region_8.png',iconPath+'hud/bluemetarr/region_9.png',iconPath+'hud/bluemetarr/region_10.png',iconPath+'hud/bluemetarr/region_11.png',iconPath+'hud/bluemetarr/region_12.png',iconPath+'hud/bluemetarr/region_13.png',iconPath+'hud/bluemetarr/region_0.png',iconPath+'metarr/mapPanel/panel_historyNextActive.gif',iconPath+'metarr/mapPanel/panel_historyNextInactive.gif',iconPath+'metarr/mapPanel/panel_historyPreviousActive.gif',iconPath+'metarr/mapPanel/panel_historyPreviousInactive.gif',iconPath+'metarr/mapPanel/panel_navigationActive.gif',iconPath+'metarr/mapPanel/panel_navigationInactive.gif',iconPath+'metarr/mapPanel/panel_restrictActive.gif',iconPath+'metarr/mapPanel/panel_restrictInactive.gif',iconPath+'metarr/mapPanel/panel_zoomBoxActive.gif',iconPath+'metarr/mapPanel/panel_zoomBoxInactive.gif');}
else{Metarr.elementRemove('mainPreload');}}
addEvent(window,'unload',EventCache.flush);addEvent(window,'load',mainPreload);mainPreload('start');Metarr.verbosity=true;mapAssemble=new MapAssemble();map=mapAssemble.createMap();layer=mapAssemble.createLayer();overview=mapAssemble.createOverview();panel=mapAssemble.createPanel(map,'Map');marker=new MapFill(map,'Map',mapAssemble.createMarker(map,'Map',layer,'TMS'),'Markers');marker.finishSetup();mapAssemble.createControl(map,'Map',overview,'OverviewMap',panel,'Panel',marker,'MapFill');hudAssemble=new HudAssemble();hudFill=new HudFill();hudFill.createMap(hudAssemble,'HudAssemble');hudFill.createMarker(map,'Map',marker,'MapFill',hudAssemble,'HudAssemble');hudFill.createSelection(hudAssemble,'HudAssemble');hudAssemble.finishSetup(map,'Map',mapAssemble,'MapAssemble',hudFill,'HudFill',layer,'TMS');mapAssemble.finishSetup(map,'Map',marker,'MapFill',layer,'TMS',hudAssemble,'HudAssemble',overview,'OverviewMap');}