
isc.HLayout.create({
	ID: "mainLayout",
	width: "100%",
	height: "100%",
	layoutMargin: 10,
	autoDraw: false
});

isc.Window.create({
	ID: "okno1",
	width: "30%",
	title: "Goooooooooooooooooooooogle",
	showResizeBar: true,
	showCloseButton: false,
	showMinimizeButton: false,
	canDragReposition: false,
	autoDraw: false
});

isc.Window.create({
	ID: "okno2",
	width: "70%",
	title: "Google Earth",
	showResizer: true,
	showCloseButton: false,
	showMinimizeButton: false,
	canDragReposition: false,
	autoDraw: false
});

isc.SectionStack.create({
	ID: "sekceStack",
	animateSections: true,
	visibilityMode: "multiple",
	autoDraw: false

});

var ge = null;
okno1.addItem("sekceStack");
mainLayout.addMember("okno1");
isc.HTMLPane.create({
	ID: "test", 
	contents: '<div id="map3d" style="height: 100%;"></div>',
	draw: function(){
		this.Super("draw");
		map3d.style.width=this.width;
		google.earth.createInstance("map3d", nacti, failureCallback);
	},
	resized: function(){
		var map3d = document.getElementById("map3d");
		if (map3d!=null){
			map3d.style.width=this.width;
		}
	},
	autoDraw: false
});
okno2.addItem(test);
mainLayout.addMember("okno2");
mainLayout.draw();
//smazat
//XMLTools.loadXML("data02.xml", "parsujXML(xmlDoc, xmlText)");

function nacti(pluginInstance){
	ge = pluginInstance;
	ge.getWindow().setVisibility(true);	
    ge.getNavigationControl().setVisibility(ge.VISIBILITY_SHOW);
	XMLTools.loadXML("data01.xml?r="+Math.random(), "parsujXML(xmlDoc, xmlText)");
}

function failureCallback(errorCode) {
	  alert("Failure loading the Google Earth Plugin: " + errorCode);
	}

function setLayers(layers){
    for (layer in layers){
        ge.getLayerRoot().enableLayerById(this.earth[layer], layers[layer]);
    }
}

function parsujXML(xmlDoc, xmlText){
	var deti = xmlDoc.documentElement.childNodes;
	for(var i=0; i<deti.length; i++){
		var node = deti[i];
		// jestlize to neni element, neresim
		if (node.nodeType!=1){
			continue;
		}
		if (node.nodeName=='folder'){
			sekceStack.addSection({
                title: node.getAttribute('nazev'), 
                items: [ vytvorStrom(node)
                ]
            });			
		}
	}
	// zobrazeni dodatecnych sekci
	sekceStack.addSection(
			{title: "Fly to...Anfliegen...Přelétnout na...",
			items:[isc.HLayout.create({
				width: "100%",
				padding: 15,
				members:[
        		    isc.HLayout.create({
        		    	ID:"naleztLayout",
        		    	members:[
					       isc.DynamicForm.create({
					    	   ID: "naleztForm",
					    	   fields:[
					    	           {name: "misto", title: "Místo", type: "text",width:"*",
					    	        	keyPress:function(){
					    	        	   switch (isc.Event.getKey()) {
						    	               case "Enter": 
						    	                   najdiMisto(); break;
						    	               default : return;
					    	        	   
					    	        	   }
					    	           }
					    	           }
					    	           ]
					    	   , width:"100%"
					       }),
					       isc.Button.create({
			    				title: "Nalézt",
			    				click: "najdiMisto()",
			    				autoFit: true,
			    				margin:3
							})
	        		    ],
	        		    defaultLayoutAlign:"top",
	        		    height: "*"
        		    })
			       ]
			})]
			});
	
	sekceStack.addSection(
			{	ID: "hladinySection",
				title: "Hladiny Google Earth",
				items:[isc.HLayout.create({members:[
				       isc.DynamicForm.create({
				    	   ID: "hladinyForm",
				    	   fields:[
				    	           {name: "LAYER_BORDERS", title: "Hranice a názvy", type: "checkbox", change:"zobrazHladinu(item, value)"},
				    	           {name: "LAYER_ROADS", title: "Silnice", type: "checkbox", change:"zobrazHladinu(item, value)"},
				    	           {name: "LAYER_BUILDINGS", title: "Budovy", type: "checkbox", change:"zobrazHladinu(item, value)"},
				    	           {name: "LAYER_TERRAIN", title: "Terén", type: "checkbox", change:"zobrazHladinu(item, value)"}
				    	           ]
				       })]
				})]
			}
			);
	hladinyForm.setValues({LAYER_BORDERS:   true, LAYER_TERRAIN:   true});
	zobrazHladinu(hladinyForm.getItem("LAYER_BORDERS"), true);
	zobrazHladinu(hladinyForm.getItem("LAYER_TERRAIN"), true);
	
	sekceStack.addSection(
			{	ID: "nastaveniSection",
				title: "Nastavení",
				items:[isc.HLayout.create({members:[
				       isc.DynamicForm.create({
				    	   ID: "nastaveniForm",
				    	   fields:[
				    	           {name: "setStatusBarVisibility", title: "Zobraz status bar", type: "checkbox", change:"nastavNastaveni(item, value)"},
				    	           {name: "setGridVisibility", title: "Zobraz mřížku", type: "checkbox", change:"nastavNastaveni(item, value)"},
				    	           {name: "setOverviewMapVisibility", title: "Zobraz náhledovou mapku", type: "checkbox", change:"nastavNastaveni(item, value)"},
				    	           {name: "setScaleLegendVisibility", title: "Zobraz legendu", type: "checkbox", change:"nastavNastaveni(item, value)"},
				    	           {name: "setAtmosphereVisibility", title: "Zobraz atmosféru", type: "checkbox", change:"nastavNastaveni(item, value)"},
				    	           {name: "setMouseNavigationEnabled", title: "Umožni navigaci myší", type: "checkbox", change:"nastavNastaveni(item, value)"}
				    	           ]
				       })
				       ]
				})]
			}
			);
	nastaveniForm.setValues({setMouseNavigationEnabled: true});
	nastavNastaveni(nastaveniForm.getItem("setMouseNavigationEnabled"), true);
	sekceStack.expandSection(0);
	
	// zobrazim prvni model
	//alert(sekceStack.sections[0].items[0].data.getLeaves()[0]);
	//vyberModel(sekceStack.sections[0].items[0].data.getLeaves()[0], null, null, sekceStack.sections[0].items[0]);
	vyberModel(sekceStack.sections[0].items[0].getRecord(0),null,0,sekceStack.sections[0].items[0]);
}

function zobrazHladinu(item, value){
	ge.getLayerRoot().enableLayerById(ge[item.name], value);
	return true;
}

function nastavNastaveni(item, value){
	ge.getOptions()[item.name](value);
	return true;
}

function najdiMisto(){
    var geocoder = new google.maps.ClientGeocoder();
    geocoder.getLatLng(naleztForm.getValue("misto"), function(point) {
        if (point) {
            var lookAt = ge.createLookAt('');
            lookAt.set(point.y, point.x, 10, ge.ALTITUDE_RELATIVE_TO_GROUND, 0, 60, 2000);
            ge.getView().setAbstractView(lookAt);
        }
    })	
}

function vytvorStrom(element){
	var treeGrid = isc.TreeGrid.create({
		showHeader: false,
		canEdit: true,
		editEvent: "doubleClick",
		alternateRecordStyles: true,
		selectionType: "single",
		leaveScrollbarGap: false,
		//selectionAppearance: "checkbox",
		//showConnectors: true,
		data: isc.Tree.create({
			nameProperty: "nazev",
			root: {
				nazev: "root"
			}
		}),
		cellChanged: "zaskrtnutoPole(record, newValue, oldValue, rowNum, colNum, grid)",
		cellClick: "vyberModel(record, rowNum, colNum, this)",
		fields:[{name: "nazev", canEdit: false},
		        {name: "zobrazit", canToggle: true, type: "boolean", width: 22
			}]
	});

	/*
	for (var i = 0; i < element.childNodes.length; i++) {
		var node = element.childNodes[i];
		if (node.nodeType!=1){
			continue;
		}
		vytvorPrvek(treeGrid.data.root, treeGrid, node);
	}
	*/
	vytvorPrvek(treeGrid.data.root, treeGrid, element);
	return treeGrid;
}

function zaskrtnutoPole(record, newValue, oldValue, rowNum, colNum){
	record.zobrazit = newValue;
	if (record.children && record.children.length>0){
		oznacDeti(record, newValue);
	}else{
		zobrazModel(record, newValue);
	}
}

function oznacDeti(record, newValue){
	for (var i = 0; i<record.children.length;i=i+1){
		record.children[i].zobrazit = newValue;
		if (record.children[i].children && record.children[i].children.length>0){
			oznacDeti(record.children[i], newValue);
		}else{
			zobrazModel(record.children[i], newValue);
		}
	}
}

function zobrazModel(record, newValue){
	record.networkLink.setVisibility(newValue);
	
}

function vyberModel(record, rowNum, colNum, grid){
	if (colNum==0 && !record.children){
		record.zobrazit = true;
		if (!record.pripojen){
			ge.getFeatures().appendChild(record.networkLink);
			record.pripojen = true;
		}else{
			var link2 = ge.createLink('');
			link2.setHref(record.url);
			
			var networkLink2 = ge.createNetworkLink('');
			networkLink2.setLink(link2);
			networkLink2.setFlyToView(true);
			//networkLink.setVisibility(n.toggleCheck(true));
			ge.getFeatures().replaceChild(networkLink2, record.networkLink);
			record.networkLink = networkLink2;
		}
		grid.markForRedraw();
	}
}

function vytvorPrvek(rodicTreeNode, hlavniTreeGrid, xmlElement) {
	for (var i = 0; i < xmlElement.childNodes.length; i++) {
		var node = xmlElement.childNodes[i];
		if (node.nodeType!=1){
			continue;
		}
		if (node.nodeName=='folder'){
			var treeNode = hlavniTreeGrid.data.add({
				nazev: node.getAttribute('nazev'),
				zobrazit: false
			}, rodicTreeNode);
			vytvorPrvek(treeNode, hlavniTreeGrid, node);
		}		
		if (node.nodeName=='model'){
			var urlfromXml = node.getAttribute('url');

			var link = ge.createLink('');
			link.setHref(urlfromXml);
			
			var networkLink = ge.createNetworkLink('');
			networkLink.setLink(link);
			networkLink.setVisibility(true);
			networkLink.setFlyToView(true);
			
			var treeNode = hlavniTreeGrid.data.add({
				nazev: node.getAttribute('nazev'),
				url: urlfromXml,
				networkLink: networkLink,
				pripojen: false,
				zobrazit: false
			}, rodicTreeNode);
			vytvorPrvek(treeNode, hlavniTreeGrid, node);
		}		
	}
}

