
//Starter
var icon1 = "images/icon1.gif";
var icon2 = "images/icon2.gif";
var xmlDaten = "kitas.xml";

var lg = null;
var la = null;
var z = null;
var sm_search_key = '';

var oldOnload = window.onload;
var helper = null;
window.onload = function() {
if(oldOnload) oldOnload();

    try {
	    var query = window.location.href;
	    if (query.indexOf('?') != -1)
	    {
		    var aQuery = query.split("?")[1].split("&");
		    var aParam = null;
			// ?long=9.711914062500004&lat=52.59637465946704&z=7
		    for (i = 0; i < aQuery.length; i++) 
		    {
		    	aQuery[i] = aQuery[i].split("=");
		    	if (aQuery[i].length != 2)
		    		continue;
		    	
		    	//alert(aQuery[i]);
		    	//alert(unescape(aQuery[i][1]));
		    	
		    	if (aQuery[i][0] == 'long')
			        lg = aQuery[i][1];
		    	if (aQuery[i][0] == 'lat')
			        la = aQuery[i][1];
		    	if (aQuery[i][0] == 'z')
			        z = aQuery[i][1];
		    	if (aQuery[i][0] == 'k')
			        sm_search_key = unescape(aQuery[i][1]);
			}
		}
	}catch(e) {}


    GetMap()
    helper = new FormValueHelper("", "", "helper");
    helper.setNoAjaxFunction(fc);
    
    setTimeout(function() {
       	if (sm_search_key != '')
    	{
	    	findAddress(sm_search_key, '');
	    	loadPushpins("all", false);
	    }
    	else if(z!=null)
    	{
    		loadPushpins("all", false);
    	}
    	else
    	{
    		loadPushpins("all", true);
    	}
    },1000);
        
}
//ende Starter








var map   = null;
var bl = "";
var pz = "";
var selectedBl = "all";
 
 function GetMap()
 {
	map = new VEMap('myMap');
	map.SetDashboardSize(VEDashboardSize.Small);
	
	if(z==null) {
		map.LoadMap(new VELatLong(10.451526,51.165691), 13);
	}else {
		map.LoadMap(new VELatLong(la,lg), z);
		//map.SetCenterAndZoom(new VELatLong(la,lg), z);
	}
	//AddMyLayer(VEDataType.GeoRSS, xmlDaten);
 }

 function AddMyLayer(type, xml)
 {
	var l = new VEShapeLayer();
	var veLayerSpec = new VEShapeSourceSpecification(type, xml, l);
	map.ImportShapeLayerData(veLayerSpec, OnComplete);
 }
 
function OnComplete(layer)
{
	var shapeCount = layer.GetShapeCount();
	for (var i = 0; i < shapeCount; i++)
	{
		var shape = layer.GetShapeByIndex(i);
		// A random image found on the web.
		var icon = "";
		if(i%2) {
			icon = "<img src='"+icon1+"'/>";
		}else {
			icon = "<img src='"+icon2+"'/>";
		}
		
		shape.SetCustomIcon(icon);
	}
}


function findAddress(address, b)
{
	bl = b;
	
	// Call VEMap.Find() to geocode address
	map.Find(null, address, null, null, null, null, false, false, false, false, findAddressCallBack);
}

// Call back function for VEMap.Find()
function findAddressCallBack(thelayer, resultsArray, places, hasMore, veErrorMessage)
{
	if(places != null && places.length >0)  {
		var latitude = places[0].LatLong.Latitude;
		var longitude = places[0].LatLong.Longitude;
		if(pz != "") {
            map.SetCenterAndZoom(new VELatLong(latitude,longitude), 12);
            pz = "";
            return;
        }
        
        if(bl == "")  {
		 map.SetCenterAndZoom(new VELatLong(latitude,longitude), 12);
		}
		else {
			map.LoadMap(new VELatLong(latitude,longitude), 8);
			AddMyLayer(VEDataType.GeoRSS, bl);
			bl = "";
		}
	}
}

function updateByCheckbox() {
    plz = Array();
    var sel = document.getElementById('select_bl');
    loadPushpins(sel.options[sel.selectedIndex].value, false);
}

function loadPushpins(ort, rezoom) {

    selectedBl = ort;

    switch (ort) {
      case "all":
        AddPushpin(ort, germanyConf, false, true, rezoom);
        break;
      case "Berlin":
        AddPushpin(ort, berlinConf, false, false, rezoom);
        break;
      case "Brandenburg":
        AddPushpin(ort, brandenburgConf, false, false, rezoom);
        break;
      case "Baden-Wuerttemberg":
        AddPushpin(ort, badenwuerttembergConf, false, false, rezoom);
        break;
      case "Bayern":
        AddPushpin(ort, bayernConf, false, false, rezoom);
        break;
      case "Bremen":
        AddPushpin(ort, bremenConf, false, false, rezoom);
        break;
      case "Hamburg":
        AddPushpin(ort, hamburgConf, false, false, rezoom);
        break;
      case "Hessen":
        AddPushpin(ort, hessenConf, false, false, rezoom);
        break;
      case "Mecklenburg-Vorpommern":
        AddPushpin(ort, mecklenburgvorpConf, false, false, rezoom);
        break;
      case "Niedersachsen":
        AddPushpin(ort, niedersachsenConf, false, false, rezoom);
        break;
      case "Nordrhein-Westfalen":
        AddPushpin(ort, nordrheinwestfalenConf, false, false, rezoom);
        break;
      case "Rheinland-Pfalz":
        AddPushpin(ort, rheinlandpfalzConf, false, false, rezoom);
        break;
      case "Saarland":
        AddPushpin(ort, saarlandConf, false, false, rezoom);
        break;
      case "Sachsen":
        AddPushpin(ort, sachsenConf, false, false, rezoom);
        break;
      case "Sachsen-Anhalt":
        AddPushpin(ort, sachsenanhaltConf, false, false, rezoom);
        break;
      case "Schleswig-Holstein":
        AddPushpin(ort, schleswigholsteinConf, false, false, rezoom);
        break;
      case "Thueringen":
        AddPushpin(ort, thueringenConf, false, false, rezoom);
        break;
        
    }
}


function AddPushpin(data, config, resetPLZ, all, rezoom){

    //map.DeleteAllShapes();
    map.Clear();
    
    if(resetPLZ == true) {
        plz = Array();
    }
    
    for(var i =0; i < co_data.length; i++) {
        //Wenn Bundesland nicht mit item übereinstimmt und nicht alle angezeicht werden sollen
        //wird hier abgebrochen.
        if(co_data[i][6] != data && all == false) continue; 
        
        //item setzen.
        var item = co_data[i];
         
         
        
        var images = "";
        var stop = false; //Zum filtern der Typen
        for(var z=0; z < icons.length; z++) {
            //Icon/Images holen
            if(icons[z][0] == item[5]){
                images = icons[z];
                
                if(document.getElementById('checkbox_'+icons[z][0])){
                    //Der typ ist nicht angekreuzt dann stopen.
                    if(document.getElementById('checkbox_'+icons[z][0]).checked == false){
                        stop = true;
                    }                    
                }
            }
        }        
        
        if(stop) continue;

        var plzInclude = false;
        for(var s=0; s < plz.length; s++) {
            if(plz[s] == item[2].substring(0,5) ){
                plzInclude = true;
            }
        }
        if(plzInclude == false){
            plz.push(item[2].substring(0,5));
        }
        
        
        var ll = new VELatLong(item[3], item[4]);
        
        var shape = new VEShape(VEShapeType.Pushpin, ll);
        shape.SetTitle(item[0]);
        
        var decs =  "<div style=\"float:left; width:224px\">\n";
            decs += "<div style=\"float:left; width:150px; border:1px solid #ffffff;\">"+ item[0]+" - "+ item[1] +" "+ item[2] +"</div>\n";
            decs += "<div style=\"float:right; border:1px solid #ffffff;\"><img src=\""+ image_dir +"/"+ images[2] +"\"/></div>\n";
            decs += "</div>";

        shape.SetDescription(decs);        
        shape.SetCustomIcon(image_dir + "/"+images[1]);
        map.AddShape(shape);
        
    }

    if(rezoom) {
        config[2] = parseInt(config[2]);
        map.SetCenterAndZoom(new VELatLong(config[0], config[1]), config[2] );
    }
    
    //addGermanyPoly();
}


function info() {

    var latLong = map.GetCenter();
    var zoom = map.GetZoomLevel();

    document.getElementById('info').innerHTML = "Lat: "+ latLong.Latitude + " Long: " + latLong.Longitude + " z:" + zoom;
}

///helper actions
    function findPlz(helper, value) {
        var str = '<table unselectable="on">';			
        var v = new Array();

        for(var i=0; i < plz.length; i++) {
            
            if(plz[i].substring(0,value.length) == value) {
                //alert(plz[i].substring(0,value.length)+" = "+value+" :: "+plz[i]);
                v.push(plz[i]);
                if(v.length > 10) break;	
            }	
        }
        
        
        for(var i=0; i < v.length; i++) {
                str += '<tr unselectable="on">';
                str += '<td set="value" class="value" id="name'+(i+1)+'" gesamt="'+v.length+'" unselectable="on">'+v[i]+'</td>';
                str += '</tr>';
        }
        
        str += '</table>';
        
        if(v.length < 1) str="";
        return str;
    }	  
  
  
var fc = function(helper, value) {
    var o = new Object();
    
    var v =  findPlz(helper, value);
    o.responseText = v;	
        
    return o;
}
    
function addGermanyPoly() {
    

    var g_shape = new VEShape(VEShapeType.Polygon, germany);
    
    //Set the line color
    var lineColor = new VEColor(255,255,255,0.0);
    g_shape.SetLineColor(lineColor);

    //Set the line width
    var lineWidth = 1;
    g_shape.SetLineWidth(lineWidth);

    //Set the fill color
    var fillColor = new VEColor(255,255,255,0.8);
    g_shape.SetFillColor(fillColor);

    
    
    g_shape.SetCustomIcon("<div></div>");

    map.AddShape(g_shape);
    
}
