/**
 * @author TsMtsUser
 */
//Initialize map
function initMap(){
	var DirecturlArray = [domainname + "tiles/"]; // , "http://79.172.211.27/tiles/";
    var urlArray = [domainname + "tilecache/tilecache.py?"]; //, "http://79.172.211.27/tilecache/tilecache.py?";
    //Initialize map options
    
    var options = {
        projection: "EPSG:23700",
        units: "m",
        maxResolution: 32, // <<<----- 1 pixel nem lehet több 32 méternél [m/px]
        minResolution: 0.125, // <<<----- 1 pixel nem lehet kevesebb 0.25 méternől [m/px]
        resolutions: [32.0, 16.0, 8.0, 4.0, 2.0, 1.0, 0.5, 0.25, 0.125],
        maxExtent: new OpenLayers.Bounds(644129, 231318, 651548, 238768), // bal-alsó, jobb-felső
		//maxExtent: new OpenLayers.Bounds(640000, 228000, 656000, 240000),
        numZoomLevels: 9, // mennyi méretarány legyen
        tileSize: new OpenLayers.Size(512, 512), // generált mozaikok mérete pixelben; default 256 *256
        controls: [new OpenLayers.Control.PanZoomBar(), new OpenLayers.Control.Navigation(), new OpenLayers.Control.Scale(), new OpenLayers.Control.LayerSwitcher({
            'ascending': false
        }), new OpenLayers.Control.ScaleLine(), new OpenLayers.Control.Permalink(),new OpenLayers.Control.Attribution()]
    };
    
    /**
     * Create map object
     */
    var map = new OpenLayers.Map('map', options);
    
    /**
     *  Create ortophoto base layers
     */
    var ujbudaOrto = new Array();
    var years = [2005, 2007, 2008, 2010];
    for (var i = 0; i < years.length; i++) {
        ujbudaOrto[years[i]] = new OpenLayers.Layer.TileCache('ujbudaOrto' + years[i], DirecturlArray, 'ujbudaOrto' + years[i], {
            maxResolution: 32.0,
            minResolution: 0.125,
            isBaseLayer: true,
            opacity: 1,
            maxExtent: new OpenLayers.Bounds(641719, 231577, 653353, 238476)
        });
        
        map.addLayer(ujbudaOrto[years[i]]);
    }
    //Add empty background
    var uresHatter = new OpenLayers.Layer.Image('uresHatter', 'lib/ext/resources/images/default/s.gif', new OpenLayers.Bounds(641719, 231577, 653353, 238476), new OpenLayers.Size(1, 1), {
        maxResolution: 32.0,
        minResolution: 0.125,
        numZoomLevels: 9,
        isBaseLayer: true
    });
    
    map.addLayer(uresHatter);
    
    var ujbudaKerHat = new OpenLayers.Layer.WMS("ujbudaKerHat", domainname + currentWMS + "/request.aspx?", {
        'layers': ['ALAP_kerulethatar'],
        'format': 'image/png',
        'version': '1.1.1',
        'transparent': true
    }, {
        isBaseLayer: false,
        opacity: 1,
		buffer: 1,
        tileSize: new OpenLayers.Size(1024, 1024),
        maxExtent: new OpenLayers.Bounds(644129, 231318, 651548, 238768),
		attribution: "<a href='http://www.foldhivatal.hu/' target='_blank'><img src='images/foldhiv_felirat.gif'/><a href='http://www.foldhivatal.hu/' target='_blank'><img src='images/foldugy_logo.gif'/><a href='http://www.ujbuda.hu/' target='_blank'><img src='images/ujbudaLogo.gif'/></a>"
		// attribution: "<a href='http://www.foldhivatal.hu/' target='_blank'><img src='images/foldhiv_felirat.gif'/><a href='http://www.foldhivatal.hu/' target='_blank'><img src='images/foldugy_logo.gif'/><a href='http://www.ujbuda.hu/' target='_blank'><img src='images/ujbudaLogo.gif'/></a><a href='http://www.tekire.hu/' target='_blank'><img src='images/tekireLogo.gif'/></a><a href='http://www.viamap.hu/' target='_blank'><img src='images/viamapLogo.gif'/></a><a href='http://www.telecopter.hu/' target='_blank'><img src='images/telecopterLogo.gif'/></a>"
    });
    map.addLayer(ujbudaKerHat);
    
    /**
     * Create vector overlays (workhorse layer)
     */
    ujbudaVectorWMS = new OpenLayers.Layer.WMS("ujbudaVectorWMS", domainname + currentWMS + "/request.aspx?", {
        'layers': currVectorLayers,
        'format': 'image/png',
        'version': '1.1.1',
        'transparent': true
    }, {
        isBaseLayer: false,
        opacity: 1,
		buffer: 1,
        tileSize: new OpenLayers.Size(1024, 1024),
        visibility: false
    
    });
    map.addLayer(ujbudaVectorWMS);
    /**
     * Create WFS layer for vector features to be loaded as Vector layer
     */
    var myStyles = new OpenLayers.StyleMap({
        "default": new OpenLayers.Style({
            pointRadius: "5",
            fillColor: "transparent",
            strokeColor: "#ff9933",
            strokeWidth: 2,
            fillOpacity: 0,
            strokeOpacity: 0.5
        }),
        "select": new OpenLayers.Style({
            fillColor: "#66ccff",
            strokeColor: "#3399ff"
        })
    });
    
    
    ujbudaVectorWFS = new OpenLayers.Layer.WFS("ujbudaVectorWFS", domainname + currentWFS + "/request.aspx?", {
        typename: 'gmgml:FOTO_Legifotok'
    }, {
        ratio: 1.25,
        extractAttributes: true,
        //style: FOTO_LegifotokStyle,
        styleMap: myStyles,
		visibility: false
    });
    map.addLayer(ujbudaVectorWFS);
    
    // Create a select feature control and add it to the map.
    selectControl = new OpenLayers.Control.SelectFeature(ujbudaVectorWFS, {
        hover: false,
        toggle: true,
		clickout:true,
        onSelect: onFeatureSelect,
        onUnselect: onFeatureUnselect
    });
    map.addControl(selectControl);
    selectControl.activate();
	
    var ujbudaOverview = new OpenLayers.Layer.Image('ujbudaOverview', 'images/ujbudaOverview.jpg', new OpenLayers.Bounds(644129, 231318, 651548, 238768), new OpenLayers.Size(200, 200), {
        numZoomLevels: 1
    });
    
    
    var overviewControl = new OpenLayers.Control.OverviewMap({
        mapOptions: {
            projection: "EPSG:23700",
            units: "m",
            maxExtent: new OpenLayers.Bounds(644129, 231318, 651548, 238768),
            numZoomLevels: 1
        },
        size: new OpenLayers.Size(200, 200),
        layers: [ujbudaOverview]
    });
    map.addControl(overviewControl);
    overviewControl.maximizeControl();
    
	//Create kozterFoglalas layer
	var kozterStore=new Ext.data.JsonStore({
		url: 'querySQL.php',
		baseParams:{
			'mode':'GETALLKOZTER',
			'query':'dummy'
		},
		fields:['igenylo','meret','cel','kiadas','lejarat','id','X','Y'],
		root:'data',
		autoLoad:true,
		listeners:{
			'load':function(){
				for(var i=0;i<kozterStore.data.length;i++){
					//var todaysdate = new Date();
					var todaysdate = new Date().format("Y-m-d h:i:s")
					//var lejaratDate = Date.parseDate(kozterStore.data.items[i].data.lejarat,"Y-m-d");
					var lejaratDate = kozterStore.data.items[i].data.lejarat;
					if(todaysdate>lejaratDate){
						fillColor="#ff0000";
					} else {
						fillColor="#00ff00";
					}
					var newPoint=new OpenLayers.Geometry.Point(kozterStore.data.items[i].data.X,kozterStore.data.items[i].data.Y);
					newFeature=new OpenLayers.Feature.Vector(newPoint,{
						'fillColor':fillColor,
						'igenylo':kozterStore.data.items[i].data.igenylo,
						'cel':kozterStore.data.items[i].data.cel,
						'meret':kozterStore.data.items[i].data.meret,
						'kiadas':kozterStore.data.items[i].data.kiadas,
						'lejarat':kozterStore.data.items[i].data.lejarat,
						'id':kozterStore.data.items[i].data.id	
					});
					kozterLayer.addFeatures([newFeature]);
				}				
			}
		}
	});
	
	//Create styles for kozter layers

    var kozterStyles = new OpenLayers.StyleMap({
        "default": new OpenLayers.Style({
            pointRadius: "5", // sized according to type attribute
            fillColor: "${fillColor}",
            strokeColor: "#ff9933",
            strokeWidth: 2
        }),
        "select": new OpenLayers.Style({
            fillColor: "#66ccff",
            strokeColor: "#3399ff"
        })
    });
	kozterLayer=new OpenLayers.Layer.Vector("kozterLayer",{styleMap:kozterStyles});
	map.addLayer(kozterLayer);
	
	
	// Create a select feature control and add it to the map.
    selectKozter = new OpenLayers.Control.SelectFeature(kozterLayer, {
        hover: false,
        toggle: true,
		clickout:true,
        onSelect: onKozterSelect,
        onUnselect: onFeatureUnselect
    });
    map.addControl(selectKozter);
    selectKozter.activate();
	
	//Create control for adding to kozterLAyers
	drawKozter = new OpenLayers.Control.DrawFeature(kozterLayer, OpenLayers.Handler.Point);
	map.addControl(drawKozter);
	
    //Create redline layer
    ujbudaRedLine = new OpenLayers.Layer.Vector("ujbudaRedLine");
    map.addLayer(ujbudaRedLine);
	
	// Create a select feature control and add it to the map.
    selectRedLine = new OpenLayers.Control.SelectFeature(ujbudaRedLine, {
        hover: true,
        toggle: true,
		clickout:true,
        onSelect: onRedLineSelect,
        onUnselect: onFeatureUnselect
    });
    map.addControl(selectRedLine);

	//meresi eredmenyek megjelenitese
	ujbudaRedLine.events.on({                         
		"featureadded": function(e) {	
			if (folyamatosmeres==0) {
				if (e.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Polygon") { 
					Ext.Msg.alert('Terület:', Math.round(e.feature.geometry.getArea()*100)/100 + ' m<sup>2</sup>');
				}
				if (e.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.Point") { 
					Ext.Msg.alert('Koordináta:', 'X=' + Math.round(e.feature.geometry.x*100)/100 + ' m<br /> ' + 'Y=' + Math.round(e.feature.geometry.y*100)/100 + ' m');
				}
				if (e.feature.geometry.CLASS_NAME=="OpenLayers.Geometry.LineString") {
					Ext.Msg.alert('Hossz:', Math.round(e.feature.geometry.getLength()*100)/100 + ' m');
				}
			
				// rajzok törlése
				var redlineFeatures=ujbudaRedLine.features.length;
				for(var i=redlineFeatures-1;i>=0;i--){
					ujbudaRedLine.removeFeatures([ujbudaRedLine.features[i]]);
				}
			
				var numControls=map.controls.length;
				//Loop through controls that are added on the fly (>12) and remove them
				for(var k=numControls-1;k>=0;k--){
					if (map.controls[k].name=="ujbudaRedLineControl") {
						selectRedLine.deactivate();
						map.controls[k].deactivate();
						map.removeControl(map.controls[k]);
					}
				}
			}
		}
    });
    
    return map;
}

function openBigFotoWindow(id, link) {
	if (bigFotoWindowOpened == true) {
		bigFotoWindowOpened = false;
		bigFotoWindow.destroy();
	}
	
	if (fotoWindowOpened == true) {
		fotoWindowOpened = false;
		fotoWindow.destroy();
	}

	bigFotoWindow = new Ext.Window({
        layout: 'fit',
        title: 'Fotó - ' + id,
        closeAction: 'close',
		html: '<img src=\"images/legifoto/' + link + '\" />',
        resizable: true,
		autoHeight: true,
		listener: {
			close: {
				fn: function() {
					bigFotoWindowOpened = false;
				}
			},
			click: {
				fn: function() {
					bigFotoWindow.destroy();
					bigFotoWindowOpened = false;
				}
			}
		}
    });

	bigFotoWindow.show();
	bigFotoWindowOpened = true;
}

function onFeatureSelect(feature){

    /*selectedFeature = feature;
    
	popup = new OpenLayers.Popup.FramedCloud("chicken", feature.geometry.getBounds().getCenterLonLat(), null, "<div style='font-size:.8em'>Azonosító: " + feature.attributes.azonosito + "<br />\
									 Dátum: " +feature.attributes.Dátum +"<br />\
									 Idő: " +feature.attributes.Idő +"<br />\
									 Szerző: " +feature.attributes.Szerző +"<br />\
									 Típus: " +feature.attributes.Tipus1 +"<br />\
									 Megjegyzés: " +feature.attributes.Megjegyzés +"<br />\
									 <a target='_blank' href='images/legifoto/"+feature.attributes.file_név+"'>\
									 	<img style='width:100px' src='images/legifoto/"+feature.attributes.file_név+"'/>\
									 </a>\
									 </div>", null, true, onPopupClose);
    feature.popup = popup;
    map.addPopup(popup); */
	
	if (fotoWindowOpened == true) {
		fotoWindowOpened = false;
		fotoWindow.destroy();
	}
	
	var fotoData = [
        [feature.attributes.azonosito, feature.attributes.Dátum, feature.attributes.Idő, feature.attributes.Szerző, feature.attributes.Tipus1, feature.attributes.Megjegyzés, '<img style=\"width:100px\" src=\"images/legifoto/' + feature.attributes.file_név + '\" />', feature.attributes.file_név]
     ]

    fotoStore = new Ext.data.SimpleStore({
        fields: [
           {name: 'azonosito'},
           //{name: 'datum', type: 'date', dateFormat: 'n/j'},
		   {name: 'datum'},
		   {name: 'ido'},
		   {name: 'szerzo'},
		   {name: 'tipus'},
		   {name: 'megjegyzes'},
		   {name: 'kep'},
		   {name: 'link'}
        ],
		data: fotoData
    });
	
    var fotoWindowForm = new Ext.FormPanel({
        buttonAlign: 'center',
		bodyStyle: 'padding: 5 5 0 5',
		autoWidth: true,
		autoHeight: true,
        items: [{
			xtype: 'grid',
			store: fotoStore,
			//ds: fotoStore,
			columns: [
				{header: 'Azonosító', width: 75, dataIndex: 'azonosito'},
				{header: 'Dátum', width: 75, dataIndex: 'datum'},	
				{header: 'Idő', width: 75, dataIndex: 'ido'},
				{header: 'Szerző', width: 75, dataIndex: 'szerzo'},
				{header: 'Tipus', width: 75, dataIndex: 'tipus'},
				{header: 'Megjegyzés', width: 75, dataIndex: 'megjegyzes'},
				{header: 'Kép', width: 100, dataIndex: 'kep'}
			],
			autoHeight: true,
			//disableSelection: false,
			width: 550,
			viewConfig: {
				forceFit: true
			},
			sm: new Ext.grid.RowSelectionModel({
                singleSelect: true,
				listeners: {
					rowselect: {
						fn: function(sm, index, record){
							openBigFotoWindow(record.data.azonosito ,record.data.link)
						}
                    }
                }
            })
		}]
	});
    
    fotoWindow = new Ext.Window({
        layout: 'fit',
        title: 'Fénykép - ' + feature.attributes.azonosito,
		id: 'fotoAblak',
        closeAction: 'close',
        resizable: true,
		autoHeight: true,
		width: 550,
        items: [fotoWindowForm],
		listener: {
			close: {
				fn: function() {
					fotoWindowOpened = false;
				}
			}
		}
    });

	fotoWindow.show();
	fotoWindowOpened = true;
}

function onFeatureUnselect(feature){
	if (feature.popup) {
		map.removePopup(feature.popup);
		feature.popup.destroy();
		feature.popup = null; 
	}
	
	if (fotoWindowOpened) fotoWindow.close();
}

function onPopupClose(evt){
    selectControl.unselect(selectedFeature);
}
