var searchResults  = new Array();
var fSearch        = new Array();
var fSearchPolygon = new Array();

function goSearch(q,targets){
    var divSearch = document.getElementById("divSearch");
    var divReklama = document.getElementById("divReklama"); 
    var divHP = document.getElementById("hikeplanner_mini");
    
    var searchGet = "http://mapy.hiking.sk/wfs/search.php?q=";
    
    divReklama.style.display = "none";
    divHP.style.display = "none";
    divSearch.style.display = "block";
    
    q = q.trim();
    searchGet += decodeURIComponent(q.replace(/\+/g,  " "));
    
    if (targets.indexOf(", ")==-1){
        searchGet+="&st[]="+decodeURIComponent(targets.replace(/\+/g,  " "));
    } else {
        targets = decodeURIComponent(targets.replace(/\+/g,  " ")).split(", ");
        
        for (var i=0; i<targets.length; i++){
            searchGet+="&st[]="+targets[i];
        }
    }
     
    xmlHttp = getAjax(finishSearch);
    xmlHttp.open("GET", searchGet , true);
    xmlHttp.send(null);

}

function finishSearch(){
    var divSearch = document.getElementById("divSearch");
    divSearch.style.height = document.body.clientHeight - 170;
    
    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){
        divSearch.innerHTML = xmlHttp.responseText;
        
        document.getElementById('search_form_settings').onclick = function (e){
            var frmChboxes = document.getElementById('search_form').style;
            if (frmChboxes.display == "none"){
                frmChboxes.display = "block";
                this.style.color = "blue";
            } else {
                this.style.color = "black";
                frmChboxes.display = "none";
            }
            return false;
        }
        
        document.getElementById('search_form_link').onclick = function (e){
            var embLinks = document.getElementById('search_form_permalink').style;
            var urlLink  = document.getElementById('search_form_permalink_a').href;
            var embEmail = document.getElementById('search_form_permalink_email');
            var embBlog  = document.getElementById('search_form_permalink_blog');            
            if (embLinks.display == "none"){
                embEmail.value = urlLink;
                embBlog.value = '<a href="' + urlLink + '">Turistická Mapa</a>';
                embLinks.display = "block";
                this.style.color = "blue";
            } else {
                this.style.color = "black";
                embLinks.display = "none";
            }
            return false;
        }
        
        document.getElementById('search_form_permalink_email').onclick = function (e){
            document.getElementById('search_form_permalink_email').select();
        }
        
        document.getElementById('search_form_permalink_blog').onclick = function (e){
            document.getElementById('search_form_permalink_blog').select();
        }
        
        document.getElementById('search_form_frm').onsubmit = function (e) {
            var q = document.getElementById('q').value;
            var frm = document.getElementById('search_form_frm');
            var i = 1;
            var st = "";
            
            while (document.getElementById("chb"+i) != null){
                var aChb = document.getElementById("chb"+i);
                if (aChb.checked){
                    st += aChb.value + ", ";
                }
                i++;
            }
            
            st = st.substr(0,st.length-2);
            
            //alert(st);
            
            goSearch(q,st);
            return false;
        }

        features.removeFeatures(fSearch);
        features.removeFeatures(fSearchPolygon);
        
        i = 0;
		searchResults = Array();
		fSearch = Array();
		
		var styleSearchPointer = new Array();
	    var styleSearchPolygon = new Array();
	     
        while (document.getElementById("result-"+i) != null) {
            searchResults[i] = new Object();
            
            styleSearchPointer[i] = OpenLayers.Util.extend({}, stylePointer);
            styleSearchPolygon[i] = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
            
	        searchResults[i].pointer_url = document.getElementById(i+"-map-pointer").src;
	        searchResults[i].name = document.getElementById(i+"-name").innerHTML;	    
            searchResults[i].type = document.getElementById(i+"-type").value;
            
            document.getElementById("result-"+i).onclick = function (e){
                var x = this.id.split("-");
                
                pozicia = new OpenLayers.LonLat(searchResults[x[1]].lon,searchResults[x[1]].lat);
                pozicia.transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));
                
                if (searchResults[x[1]].type == "polygon"){
                    zoom = 10;
                } else {
                    zoom = 14;
                }
                
                map.setCenter(pozicia, zoom);
               
                return false;
            }
            
            if(searchResults[i].type == "polygon") {
                searchResults[i].polygon = document.getElementById(i+"-polygon").value;
                    
                var pointList = [];
                var pairs = searchResults[i].polygon.trim().split(" ");
                
                for(var j=0; j<pairs.length; j++){
                    var pair = pairs[j].split(",");
                    var newPair = new OpenLayers.LonLat(pair[0],pair[1]);
                    newPair.transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));
                    
                    var newPoint = new OpenLayers.Geometry.Point(newPair.lon, newPair.lat);
                    pointList.push(newPoint);
                }
                
                /*styleSearchPolygon[i].label = searchResults[i].name;*/
                styleSearchPolygon[i].fontSize = 10;
                styleSearchPolygon[i].fillColor = "#00e13b";
                styleSearchPolygon[i].strokeColor = "#00e13b";
                styleSearchPolygon[i].strokeWidth = 4;
                styleSearchPolygon[i].fillOpacity = 0;
                styleSearchPolygon[i].strokeOpacity = 0.7;
                
                var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
                var center = linearRing.getCentroid();
                
                fSearchPolygon[i] = new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.Polygon([linearRing]),
                                    new Object(),
                                    styleSearchPolygon[i]);
                                    
                features.addFeatures(fSearchPolygon[i]);
                
                styleSearchPointer[i].externalGraphic = searchResults[i].pointer_url;
                styleSearchPointer[i].graphicTitle = searchResults[i].name;
                
                fSearch[i]=new OpenLayers.Feature.Vector(
                                    center,
                                    new Object(),
                                    styleSearchPointer[i]);
                features.addFeatures(fSearch[i]);
                
                centerWGS = center.clone();
                centerWGS.transform(new OpenLayers.Projection("EPSG:900913"), new OpenLayers.Projection("EPSG:4326"));
                
                searchResults[i].lon = centerWGS.x;
                searchResults[i].lat = centerWGS.y;
                
            } else if(searchResults[i].type == "point") {
                sLon = document.getElementById(i+"-lon").value;
                sLat = document.getElementById(i+"-lat").value;    
                searchResults[i].lon = sLon;
                searchResults[i].lat = sLat;
                
                searchPoint = new OpenLayers.LonLat(sLon,sLat);
                searchPoint.transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));
                
                styleSearchPointer[i].externalGraphic = searchResults[i].pointer_url;
                styleSearchPointer[i].graphicTitle = searchResults[i].name;
                
                fSearch[i]=new OpenLayers.Feature.Vector(
                                    new OpenLayers.Geometry.Point(searchPoint.lon,searchPoint.lat),
                                    new Object(),
                                    styleSearchPointer[i]);
                features.addFeatures(fSearch[i]);     
            }           
	        i++;
        }
        results_count = i;
        
        if (i > 0){
            correctLayers();
            map.zoomToExtent(features.getDataExtent());
            if (map.getZoom() == 15)  map.zoomOut();  
        } else {
            zoom = 8;
            pozicia = new OpenLayers.LonLat(lon,lat);
            pozicia.transform(new OpenLayers.Projection("EPSG:4326"),new OpenLayers.Projection("EPSG:900913"));
            map.setCenter(pozicia, zoom);
        }
    }
}
