/*
 Culturenet Web Mapping
 Copyright Eryr Ltd (http://www.eryr.com)
*/
var manage = false;
var lon=5;var lat=40;var zoom=0;var map,layer;var poi=null;var options=null;var currentLayer=null;var extent=null;var wkt=null;var lang=0;var mapLoadingDiv=null;var allPeriods=true;var resultsTab;var topicTable,periodTable;var fcsDelim="~";var fcsPeriodDelim="^";OpenLayers.Feature.ClusteredFeatures=OpenLayers.Class(OpenLayers.Feature.WFS,{totalFeatures:0,magicNumber:null,initialize:function(layer,xmlNode){var newArguments=arguments;var data=this.processXMLNode(xmlNode);newArguments=[layer,data.lonlat,data];OpenLayers.Feature.prototype.initialize.apply(this,newArguments);var fscale=10;if(this.totalFeatures>50){fscale=30;}else{fscale=Math.sqrt(30*this.totalFeatures);if(fscale<15){fscale=15;}}
var size=new OpenLayers.Size(fscale,fscale);var offset=new OpenLayers.Pixel(-(size.w/2),-size.h/2);this.data.icon=new OpenLayers.Icon('/openlayers/img/clustered_marker.png',size,offset);this.createMarker();this.layer.addMarker(this.marker);this.marker.events.register('click',this,this.onClick);},onClick:function(evt,obj){display.showFeatureData(this.magicNumber,this.totalFeatures);},destroy:function(){if(this.marker!==null){this.layer.removeMarker(this.marker);}
OpenLayers.Feature.prototype.destroy.apply(this,arguments);},getFeatures:function(offset,len){if(offset>totalFeatures||(offset+len)>totalFeatures){return;}},processXMLNode:function(xmlNode){var point=OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,"http://www.opengis.net/gml","gml","Point");var text=OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(point[0],"http://www.opengis.net/gml","gml","coordinates")[0]);var floats=text.split(",");var center=OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,"http://mapserver.gis.umn.edu/mapserver","ms","center")[0]);centerPoint=wkt.read(center);this.totalFeatures=OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,"http://mapserver.gis.umn.edu/mapserver","ms","total")[0]);this.magicNumber=OpenLayers.Util.getXmlNodeValue(OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,"http://mapserver.gis.umn.edu/mapserver","ms","magickey")[0]);return{lonlat:new OpenLayers.LonLat(parseFloat(floats[0]),parseFloat(floats[1])),id:null};},CLASS_NAME:"OpenLayers.Feature.ClusteredFeatures"});function activateTab(activeTabId){$('tab-pages').getChildren("div").addClass("mootabs_inactive_page");activeTabPageID=activeTabId+"-page";$(activeTabPageID).removeClass("mootabs_inactive_page");$('mootabs-strip').getElements("li").addClass("mootabs_inactive_tab");$('mootabs-strip').getElements("li").removeClass("current");$(activeTabId).addClass("current");}

function nf(){

}



function getURLArg(arg,success,failure){if(document.location.href.split("?")[1].split(arg+"=").length>1){var value=document.location.href.split("?")[1].split(arg+"=")[1].split("&")[0];success(value);return true;}
failure();return false;}

function initTabs(){$('mootabs-strip').getElements("li").addEvent('click',function(){activateTab(this.id);});activateTab("options-tab");}
function showResults(){activateTab("results-tab");}
function highlight(){$("search_button").highlight();$("applyChanges").morph({'background-color':'#847385'});}
function getPeriods(){var pa=document.filters.period;var periods=[];for(i=0;i<pa.length;i++){if(pa[i].checked){periods.push(pa[i].value);}}
return periods;}
function getMedium(){return document.filters.medium[document.filters.medium.selectedIndex].value;}
function getActiveLayer(){return document.filters.layer[document.filters.layer.selectedIndex].value;}
function getWordSearchValue(){return document.filters.word_search.value;}
function buildFilterCookieString(){return getPeriods().join(fcsPeriodDelim)+fcsDelim+getMedium()+fcsDelim+getActiveLayer()+fcsDelim+escape(getWordSearchValue());}
function createCookie(name,value,days){var expires;if(days){var date=new Date();date.setTime(date.getTime()+(days*24*60*60*1000));expires="; expires="+date.toGMTString();}
else{expires="";}
document.cookie=name+"="+value+expires+"; path=/";}
function saveMapContext(){var loc=map.getCenter();var zoomLevel=map.getZoom();var filterObject=buildFilterCookieString();context=loc.lon+","+loc.lat+","+zoomLevel+","+filterObject;createCookie("mapcontext",context,7);}
function readCookie(name){var nameEQ=name+"=";var ca=document.cookie.split(';');for(var i=0;i<ca.length;i++){var c=ca[i];while(c.charAt(0)==' '){c=c.substring(1,c.length);}
if(c.indexOf(nameEQ)===0){return c.substring(nameEQ.length,c.length);}}
return null;}
function getTotalPeriods(){return document.filters.period.length;}
function createEqToFilter(propertyName,literal){return"<PropertyIsEqualTo>\n\t<PropertyName>"+propertyName+"</PropertyName>\n\t<Literal>"+literal+"</Literal>\n</PropertyIsEqualTo>";}
function getFilter(){var filter="";var layerId=getActiveLayer();var periods=getPeriods();var medium=getMedium();var theLanguage=createEqToFilter("language",lang);if(periods.length>0){p="";if(periods.length<getTotalPeriods()){for(i=0;i<periods.length;i++){p+=createEqToFilter("periods",periods[i]);}
if(periods.length>1){p="<OR>"+p+"</OR>";}}
filter+=p;}
if(medium!="All"){filter+=createEqToFilter("medium",medium);}
var lf=createEqToFilter("layer",layerId);filter="<AND>"+filter+lf+theLanguage+"</AND>";filter="<Filter>"+filter+"</Filter>";return filter;}
function applyFilter(){currentLayer.mergeNewParams({"filter":getFilter(),"WS":getWordSearchValue()});}
function applyFilterString(filterString){var filterParts=filterString.split(fcsDelim);if(filterParts.length==4){document.filters.medium.selectedIndex=filterParts[1];var ti=topicTable[filterParts[2]];document.filters.layer[ti].selected=true;var periodArray=filterParts[0].split(fcsPeriodDelim);var pa=document.filters.period;for(var i=0;i<pa.length;i++){pa[i].checked=false;}
for(var j=0;j<periodArray.length;j++){pa[periodTable[periodArray[j]]].checked=true;}
document.filters.word_search.value=unescape(filterParts[3]);applyFilter();}}
function moveMapTo(x,y,z){var lonlat=new OpenLayers.LonLat(x,y);map.setCenter(lonlat,z,true);applyFilter();}
function loadMapContext(){context=readCookie("mapcontext");if(context){c=context.split(",");moveMapTo(c[0],c[1],c[2]);applyFilterString(c[3]);}else{moveMapTo(258500,281500,1);}}
function buildTopicLookup(){var l=document.filters.layer;var tlObj={};for(i=0;i<l.length;i++){tlObj[l[i].value]=i;}
return tlObj;}
function buildPeriodLookup(){var p=document.filters.period;var plObj={};for(i=0;i<p.length;i++){plObj[p[i].value]=i;}
return plObj;}
function init(language){OpenLayers.ImgPath="openlayers/img/";initTabs();var wfs_uri="/wfsmysql?";var wms_uri="http://www.gtj.org.uk/tilecache/tilecache.py?";var get_features_uri="/typo3conf/ext/cncgis/scripts/getFeatures.php?";mapLoadingDiv=$('map-loading');lang=language;extent=new OpenLayers.Bounds(0,0,700000,1300000);ukExtents=new OpenLayers.Bounds(0,0,700000,1300000);wkt=new OpenLayers.Format.WKT();display=new OpenLayers.POIPanel($("POIPanel"),{maxResults:8,language:lang,script:get_features_uri});map=new OpenLayers.Map($('map'),{controls:[new OpenLayers.Control.MouseDefaults()],resolutions:[2600,440.0,160.0,50.0,25.0],maxResolution:2600,projection:'EPSG:27700',maxExtent:extent,restrictedExtent:ukExtents});base=new OpenLayers.Layer.WMS("Wales",wms_uri,{layers:"culturenet"});wfs=new OpenLayers.Layer.WFS("Culturenet Features",wfs_uri,{typename:"features",maxfeatures:100},{featureClass:OpenLayers.Feature.ClusteredFeatures});map.controls[0].defaultWheelUp=function(){};map.controls[0].defaultWheelDown=function(){};LayerMonitor.monitorLayer(wfs);map.addLayers([base,wfs]);map.addControl(new OpenLayers.Control.PanZoomBar());currentLayer=wfs;topicTable=buildTopicLookup();periodTable=buildPeriodLookup();loadMapContext();onSelect=function(obj){l=wkt.read(obj.coord);moveMapTo(l.geometry.y,l.geometry.x,3);};var autosuggest_options={script:"typo3conf/ext/cncukgazeteer/scripts/getLocation.php?",varname:"input",minchars:4,callback:onSelect,timeout:5000,json:true};$("filters").addEvent('click',highlight);var as=new AutoSuggest('location_finder',autosuggest_options);window.onunload=saveMapContext;


}
LayerMonitor={queued:0,monitorLayer:function(layer){layer.events.register('loadstart',null,LayerMonitor.loading);layer.events.register('loadend',null,LayerMonitor.loaded);layer.events.register('loadcancel',null,LayerMonitor.loaded);},loading:function(){LayerMonitor.setLoading(true);LayerMonitor.queued=1;},loaded:function(){LayerMonitor.queued=0;LayerMonitor.setLoading(false);
if (manage){

initManageT();
}

},setLoading:function(isLoading){if(isLoading){if(!LayerMonitor.queued){mapLoadingDiv.setStyle('display','block');}}else{if(!LayerMonitor.queued){mapLoadingDiv.setStyle('display','none');}}}};function toggleView(){if(options!==null&&poi!==null){options.toggle();poi.toggle();}



}


function getMediaNew(){var ma=document.filters.mediaNew;var media=[];for(i=0;i<ma.length;i++){if(ma[i].checked){media.push(ma[i].value);}}
return media;}
function resetFilter(){document.filters.medium.selectedIndex="All";document.filters.layer[17].checked=true;var pa=document.filters.period;for(var i=0;i<pa.length;i++){pa[i].checked=true;}}