// This function is used to create Ext JS Layout
function createLayout(){
	mapLayout = new Ext.Viewport({
		id: 'mapLayoutID',
		layout: 'border',
		renderTo: Ext.getBody(),
		items: layoutItems		
	});
}

//This function is associated with Google Maps initialization
function gmapLoad(){
	if (GBrowserIsCompatible()) {
		mapID = new GMap2(Ext.getCmp('mapPanel').body.dom);
		mapID.setCenter(new GLatLng(centerx, centery), initialLevel);
		mapID.addControl(mapDragZoom);  	
		mapID.addControl(new logoCopyRight(logoImage));	
		addHTLayer();
		
		gmapNavControl =new GSmallMapControl();
		mapID.addControl(gmapNavControl);
		GEvent.addListener(mapID,"mousemove", function(point) {        	
			coords = "Lat : " + point.y.toFixed(6) + ", Lng : " + point.x.toFixed(6);
			coordinateBar.setStatus(coords);
        });
        
        featureTable_ = document.getElementById("featuretbody");
	}
}

// This function changes the Google Maps / Virtual Earth and Open Street Map base maps
function changeBaseMap(btn){
	mapID.setMapType(btn.maptype);
}

//This function is used to create layer tree from dataTree.json 
function createLayerTree(){
	
	layerTree = new Ext.tree.TreePanel({
		renderTo:'treeViewAccordion',
		preloadChildren: true,
		enableDD: true,
		loader: layerTreeLoader,
		autoScroll:true,
		root: layerTreeRootNode
	});
	
	//layerTreeRootNode.expandChildNodes(true); 
	layerTree.render();
	layerTreeRootNode.expand();
	//layerTree.expandAll();
	//layerTree.expandChildNodes(true);
	//layerTree.on('checkchange', addRemoveLayer);
	//layerTree.on('append', function(tree, parent, node, xindex) { layerTreeIndex = node.attributes.id; });
	//layerTree.on('contextMenu', layerTreeContextHandler);
	layerTree.on('click', layerTreeOnClick);
}	

function layerTreeOnClick(node, ev){
	
	//Ext.Msg.alert('Status', node.id + '--' + node.attributes.levelID);
	addPOI2Map(node.attributes.id);
	//console.log(node.attributes.id);
	
	//if (node.childNodes.length != 0){
	//	Ext.Msg.alert('Status', node.childNodes.length);	
	//}

}

function addHTLayer(){	
	myCopyright = new GCopyrightCollection('(c)');	
	myCopyright.addCopyright(new GCopyright('Hacettepe', new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)),0,'Hacettepe'));
	
	hacettepeTileLayer = new GTileLayer(myCopyright, 0, 21 );
	hacettepeTileLayer.getTileUrl = function(tile,zoom){
		return 'http://yunus.hacettepe.edu.tr/~mugakb05/mge1/Layer_NewLayer1/'  + TileToQuadKey(tile.x,tile.y,zoom)+ '.png'; 
	};
	hacettepeTileLayer.isPng = function() { 
		return true;
	};
	hacettepeTileLayer.getOpacity = function() { 
		return (0.7); 
	};
	hacettepeOverlay = new GTileLayerOverlay(hacettepeTileLayer);
	mapID.addOverlay(hacettepeOverlay);
}


//This function is a listener for Layer Tree Context Menu
function layerTreeContextHandler(node) {
	node.select();
	if (node.attributes.serviceType == 2 || node.attributes.serviceType == 3)
		layerTreeContextMenuAGS.show(node.ui.getAnchor());
	else
		layerTreeContextMenuOther.show(node.ui.getAnchor());
} 

//This function removes the layer from the tree, it also removes it from the map if the layer is checked.
function deleteLayerTreeNode(){
	var delNode = layerTree.selModel.selNode;
	statusBar.setStatus('<b>Last action:</b> Service <i>'+ delNode.attributes.text + '</i> is deleted.');
	if (delNode.attributes.checked == true) {
		addRemoveLayer(delNode, false);
	}
	layerTree.selModel.selNode.parentNode.removeChild(delNode);
}

function TileToQuadKey ( x, y, zoom){
	
    var quad = "";

    for (var i = zoom; i > 0; i--){
        var mask = 1 << (i - 1);
        var cell = 0;
        if ((x & mask) != 0)
            cell++;
        if ((y & mask) != 0)
            cell += 2;
        quad += cell;
    }
    return quad;
}

function addPOI2Map(unid){
	
	for (i=0; i < fetchPointNums; i++){
		mapID.removeOverlay(markerArray[i]);
		markerArray[i] = null;
	}
	
	//mapID.clearOverlays();
	
	var levelID = unid;
	var txtLevelID = levelID.toString();
	if (txtLevelID.length == 1) { // birden fazla nokta gösterilir
		queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level0==' + levelID;		
	}
	else if (txtLevelID.length == 2) { // birden fazla nokta gösterilir
		queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level1==' + levelID;		
	}
	else if (txtLevelID.length == 3) { // birden fazla nokta gösterilir
		queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level2==' + levelID;		
	}
	else { //tek nokta gösterilir.
		queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=unid==' + levelID;
	}	
	
	//queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level0==5';
	var agsLayerFields = ["gsx$unid.$t","gsx$name.$t","gsx$description.$t","gsx$category.$t","gsx$level0.$t","gsx$level1.$t","gsx$level2.$t","gsx$latitude.$t","gsx$longitude.$t"]
	var attWindowFieldDataReader = new Ext.data.JsonReader({fields: agsLayerFields,root: 'feed.entry'});
	
	var attWindowFieldDataProxy = new Ext.data.HttpProxy({url: queryUrl });
	attWindowFieldDataStore = new Ext.data.Store({reader: attWindowFieldDataReader, proxy: attWindowFieldDataProxy, listeners:{load : function(){ 
			//statusBar.clearStatus();
			statusBar.setStatus('Toplam bulunan nokta sayısı : ' + this.getCount());
			fetchPointNums = this.getCount();
			jsonStore = attWindowFieldDataStore.reader.jsonData.feed.entry;
			
			//console.log(fetchPointNums);
			var detail;
			var pname;
			
			for(i=0; i < fetchPointNums; i++){
				var lat = jsonStore[i].gsx$latitude.$t.replace(',','.');
				var lng = jsonStore[i].gsx$longitude.$t.replace(',','.');
				pname = jsonStore[i].gsx$name.$t;
				detail = jsonStore[i].gsx$description.$t;
				var tempMarker;
				
				var stuff = '<div style="padding: 0px 0px 8px 8px; background: url(img/point_bottom_left.png) no-repeat bottom left;"><div style="background-color: #f2efe9; padding: 2px;"><b> ' + pname + '<\/b><\/div><\/div>';
				markerArray[i] = new ELabel(new GLatLng(lat,lng), stuff, null, null, 65);

				
				//markerArray[i] = new ELabel(new GLatLng(lat,lng), "Deneme " + i, "style1");
				
				//markerArray[i] = new GMarker(new GLatLng(lat,lng));
				//GEvent.addListener(markerArray[i], "click", function() {
					//var myHtml = "<b>#" + number + "</b><br/>" + message[number -1];
				//	mapID.openInfoWindowHtml(new GLatLng(lat,lng), "deneme " + i);
				//});
				//markerArray[i] = tempMarker;
				
				mapID.addOverlay(markerArray[i]);
				//console.log(i + '-->' + jsonStore[i].gsx$longitude.$t + '-' + jsonStore[i].gsx$latitude.$t);				
			}
			
			if (fetchPointNums == 1){ //nokta sayısı 1 ise detayı sağa yükler.
				//Ext.get('detailWindow').innerHTML = pname;
				var accord = Ext.getCmp('rightAccordionPanel');

				if (accordStatus == true) accord.remove(tempAccord);
				
				tempAccord = accord.add({title: pname, html: detail});
				accord.doLayout();
				accordStatus = true;		
			}
		}}	
	});
	attWindowFieldDataStore.load();	
	
	
}

function openCloseBeytepe(){
	if(beytepeStatus == false){
		beytepeStatus = true;
		addHTLayer();
	}
	else {
		beytepeStatus = false;
		mapID.removeOverlay(hacettepeOverlay);
	}
}
















function deneme(){

	var txtLevelID = levelID.toString();
	if (txtLevelID.length < 5) { // birden fazla nokta gösterilir
		queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level0==' + levelID + '%20or%20level1==' + levelID + '%20or%20level2==' + levelID;		
	}
	else { //tek nokta gösterilir.
		
		
	}
	
	queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level0==5';
	var agsLayerFields = ["gsx$id.$t","gsx$name.$t","gsx$description.$t","gsx$category.$t","gsx$level0.$t","gsx$level1.$t","gsx$level2.$t","gsx$latitude.$t","gsx$longitude.$t"]
	var attWindowFieldDataReader = new Ext.data.JsonReader({fields: agsLayerFields,root: 'feed.entry'});
	
	var attWindowFieldDataProxy = new Ext.data.HttpProxy({url: queryUrl });
	attWindowFieldDataStore = new Ext.data.Store({reader: attWindowFieldDataReader, proxy: attWindowFieldDataProxy, listeners:{load : function(){ 
			//statusBar.clearStatus();
			statusBar.setStatus('Ready - Total Records Fetched : ' + this.getCount());
			jsonStore = attWindowFieldDataStore.reader.jsonData.feed;
		}}	
	});
	attWindowFieldDataStore.load();	
	
	
	
}












function loadChildren(levelID){
	
	var txtLevelID = levelID.toString();
	if (txtLevelID.length == 1) {
		
		
	}
	
	queryUrl = 'proxy.php?http://spreadsheets.google.com/feeds/list/rCNidLrypCtXLPgy3ytPp5g/od6/public/values?alt=json&sq=level0==' + levelID + '%20or%20level1==' + levelID + '%20or%20level2==' + levelID;
	var agsLayerFields = ["gsx$id.$t","gsx$name.$t"]
	var attWindowFieldDataReader = new Ext.data.JsonReader({fields: agsLayerFields,root: 'feed.entry'});
	
	var attWindowFieldDataProxy = new Ext.data.HttpProxy({url: queryUrl });
	attWindowFieldDataStore = new Ext.data.Store({reader: attWindowFieldDataReader, proxy: attWindowFieldDataProxy, listeners:{load : function(){ 
			//statusBar.clearStatus();
			statusBar.setStatus('Ready - Total Records Fetched : ' + this.getCount());
			jsonStore = attWindowFieldDataStore.reader.jsonData.feed;
		}}	
	});
	attWindowFieldDataStore.load();	
	
	
	
}

