var repeatCount = 0;
var cTimeout;

var measure_is_init;  /// if measure controls are created


function smoothscroll(scrollPos,oldpos)
{
//alert(scrollPos+"  "+oldpos);

if((oldpos>scrollPos && window.pageYOffset>scrollPos) || (oldpos<scrollPos && window.pageYOffset<=scrollPos))
{
  if(oldpos>scrollPos)
    window.scrollBy(0,-5);
  else 
    window.scrollBy(0,5);
}
else
{
clearTimeout(cTimeout);
return;
}
cTimeout = setTimeout("smoothscroll('" + scrollPos + "','" + oldpos + "')",1);
}

function toggleDisplay(element) {
   // if (element == $_(_debug)) {
        //alert(debugu);
     //   debugu = "";
  //  }
    if (element.style.display) {
        element.style.display = "";
        return true;
    } else {
        element.style.display = "none";
        return false;
    }
}
function quickSearch(table_name,fields,str_hab)
{ 
//<?=$q?>
//location.href='tablemng.php?q='+str_hab; 

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 )
    {

    document.getElementById("livesearch"+table_name).innerHTML=xmlhttp.responseText;

    }
  }
if (str_hab.length>=0)
  {
   xmlhttp.open("GET","tablemng.php?op=quiksearch&q="+str_hab+"&table="+table_name+"&fields="+fields,true);
   xmlhttp.send();
  }

}
function mytabSelected(id,last_id)
{
//alert(id);
wfs.options.protocol.params['overlay']=id;
wfs.redraw();
return true;
}
function makePost(formu){
    var a = new Array();
    for (var i = 0; i < formu.length; i++) {
        a[i] = new Array(formu[i].name, formu[i].value);
    }
    doPost("tablemng.php", a);
    
    return false;
}


function clearForm(formu){
    for (var i = 0; i < formu.length; i++) {
        if (formu[i].type == "text") {
            formu[i].value = "";
        }
    }
    return false;
}

function doPost(url, parameters) {
  // create the AJAX object
  var MyxmlHttp = undefined;
  if (window.ActiveXObject){
    try {
      MyxmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
    } catch (othermicrosoft){
      try {
        MyxmlHttp = new ActiveXObject(
            "Microsoft.XMLHTTP");
      } catch (failed) {}
    }
  }    

  if (MyxmlHttp == undefined && window.XMLHttpRequest) {
    // If IE7, Mozilla, Safari, etc: Use native object
    MyxmlHttp = new XMLHttpRequest();
  }  

  if (MyxmlHttp != undefined) {
    // create the parameter string
    // iterate the parameters array
    var parameterString = "";  

    for (var i = 0; i < parameters.length; i++) {
      parameterString += (i > 0 ? "&" : "")
          + parameters[i][0] + "="
          + encodeURI(parameters[i][1]);
    }  

    // open the connections
    MyxmlHttp.open("POST", url, true);
    // callback handler
    MyxmlHttp.onreadystatechange = function() {
      // test if the response was totally sent
      if (MyxmlHttp.readyState == 4
            && MyxmlHttp.status == 200) {
        // so far so good
        // do something useful with the response
        if (url.indexOf("login") != -1) {
            //we reload the login tab, according to response status
            reloadLogin();
        }
        else
         refreshmap();
        //alert(xmlHttp.responseText);
      }
    }  

    // set the necessary request headers
    MyxmlHttp.setRequestHeader("Content-type",
        "application/x-www-form-urlencoded");
    MyxmlHttp.setRequestHeader("Content-length",
        parameterString.length);
    MyxmlHttp.setRequestHeader("Connection", "close");  

    // send request
          
    MyxmlHttp.send(parameterString);
  }
}
function doGet(content, source, operation) {
    var myHttpRequest = false;
	if(window.XMLHttpRequest)
		myHttpRequest = new XMLHttpRequest();
	else if(window.ActiveXObject)
		myHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
	if(myHttpRequest) {
        //alert(source);
		myHttpRequest.open("GET", source);
		myHttpRequest.onreadystatechange = function()
		{
			//if(myHttpRequest.readyState==4 || myHttpRequest.readyState == "complete") {
			if(myHttpRequest.readyState==4) {
				if(operation=="getlegend")
				 document.getElementById("legend").innerHTML=myHttpRequest.responseText;
				if(operation=="setlayerstatus")
				 refreshmap();
                            if(operation=="addlayers"){
				 refreshmap(); refreshlegend("");
                            }
                if (operation == "search") {
//                      loadTab("search","Search result",myHttpRequest.responseText, true, true); 
                      tabbar.addTab("search","Search","*");
                      tabbar.setContentHTML("search",myHttpRequest.responseText);
                      tabbar.setTabActive("search");

                }
                if (operation == "feedParks") {
                    feedParks(content, myHttpRequest.responseText);
                } else {
                    //do nothing
                }
			}
		}
		myHttpRequest.send(null);
	} else {
		alert("Browser does not support XMLHttpRequest");
	}
}
function $_(id) {
    return document.getElementById(id);
}

function getClientWidth() {
    return (document.compatMode=='CSS1Compat' && !window.opera)?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight() {
    return (document.compatMode=='CSS1Compat' && !window.opera)?document.documentElement.clientHeight:document.body.clientHeight;
}  


              function doCheck(checkbox){
                    s = $_("categList").value;
                    if (checkbox.checked) {
                        s += checkbox.name + ",";
                    } else {
                        s = s.replace(checkbox.name + ",", "");
                    }
                    $_("categList").value = s;
                    //alert($_("categList").value);
                }
                function checkAll(name){
                    checker = $_(name + "_checker");
                    lista = $_(name);
                    elemente = lista.getElementsByTagName("input");
                    for (i = 0; i < elemente.length; i++) {
                        if (elemente[i] != checker && elemente[i].checked != checker.checked) {
                            elemente[i].click();
                        }
                    }
                }
                function sendList(){
                  
                    lista = $_("categList").value.split(",");
                    
                    categx = new Array();
                    for (i = 0; i < lista.length - 1; i++) {//skip the last empty element
  
                        element = lista[i].split("~");
                        if (!categx[element[0]]) {
                            categx[element[0]] = new Array();
                        }
                        categx[element[0]].push(element[1]); 
                    }
                    categs = "";
                    layers = "";  
   
                    for (arrayKeyx in categx) {
                        categs += arrayKeyx + ",";
                        layers += categx[arrayKeyx].join(",") + ";";
                    }
                    doGet("","mappa/insertlayers.php?category="+category+"&categs=" + categs.slice(0, -1) + "&layers=" + layers.slice(0, -1), "addlayers");
                }
   

///////////////////////////////////////////////////////////////
function gettabsrc(tabname_prm){

var tb= tabsrc[tabname.indexOf(tabname_prm)];
//reloadTab(tabname_prm,tb);
return false;
}



function initTabbar(category, tbnm, tbsrc,tblbl) {
/* */    
   
    tabbar.removeTab("info")
    
  //  loadTab("info","Info","info.php?category="+category , true, true);
    if(tbnm.length==0)
       return;          
    tabname=tbnm.split("~");
    tabsrc=tbsrc.split("~");
    tablabel=tblbl.split("~");
    for (var i=0; i<tabname.length; i++) 
    {
      loadTab(tabname[i],tabname[i], tabsrc[i], true, false);
    }

  
}

function loadTab(tab, tabTitle, href, closeButton, activateAfterLoad) {


 //   if (tab == null || tab == "undefined") {
   //     tab = tabbar.getActiveTab();
  //  }

//alert(href);
//tabbar.removeTab(tab);
if(!tabbar.cells(tab))
   tabbar.addTab(tab, tabTitle, "*");
tabbar.setContentHref(tab,href);
//tabbar.forceLoad(tab);

    
    if (closeButton == true || closeButton == false) {
            tabbar.enableTabCloseButton(closeButton);
        }    

    if (activateAfterLoad) {
        tabbar.setTabActive(tab);
    }




}


function generateBC(){
    
    //root level 0

    ret = "<a href=\"#\" onClick=\"level_pointer='level0';onclickBC();return false;\">Location: Carpathians</a>";
   if(level_pointer=="level1" || level_pointer=="level2")
          {
        //level 1
        ret += " > <a href=\"#\" onClick=\"level_pointer='level1';onclickBC();return false;\">" + level1 + "</a>";
        
        if(level_pointer=="level2")
         {
            //level 2
            ret += " > <a href=\"#\" onClick=\"level_pointer='level2'';onclickBC();return false;\">" + level2 + "</a>";
        }
    }
    return ret;
}

function changeBC() {
    $_("breadcrumbs").innerHTML = generateBC();
 
}

 function onPopupClose(evt) {
        //    selectControl.unselect(selectedFeature);
        }
 function onHightlited(event) {
	        
	       
        }
 
 function onFeatureUnselect(feature) {
          //  map.removePopup(feature.popup);
          //  feature.popup.destroy();
           // feature.popup = null;
        }           
 function onFeatureSelect(feature) {
	        selectedFeature = feature;
	        var popupstr;

          if(category=="der"){
               loadTab(feature.attributes["target"],feature.attributes["target"], 'tablemng.php?q=&orderby=gid&ordertype=desc&table='+feature.attributes["tablename"]+'&a=view&recid=gid='+feature.attributes["id"],true,true);
          }
          else if(feature.attributes["target"]){
               loadTab(feature.attributes["target"], feature.attributes["target"], 'info.php?category='+category+'&id='+feature.attributes["id"]+'&tablename=' + feature.attributes["tablename"], true, true);
          }         
          else{
               loadTab('info', 'INFO', 'info.php?category='+category+'&id='+feature.attributes["id"]+'&tablename=' + feature.attributes["tablename"], true, true);
          }
          
         //  changeBC();

        }
 function serialize(feature) {
	 
     var out_options = {
          'internalProjection': map.baseLayer.projection,
          'externalProjection': map.baseLayer.projection
            };
           var wkt=new OpenLayers.Format.WKT(out_options);
           var str = wkt.write(feature);
      if (targetIframe == null) {
              document.getElementById(targetField).value = str;
      } else {
////////////////    se lucreaza cu form dhtmlx
           
            }

           // alert(str);
        // feature.destroy();        
   
        }
        
        var gPointCount = 0;
function pointHandler(aPoint) {          
            gPointCount++;
            console.log("pointHandler:point n." + gPointCount + " geom = " + aPoint.toShortString());
        }       
        
function refreshmap()
{
        national_parks.mergeNewParams({'random':Math.random()}); 
	 // wfs.mergeNewParams({'random':Math.random()}); 
         
         national_parks.redraw();
         wfs.redraw();
}
    

function startDraw(object, form, field) {
	//alert(object);
    stopDraw();

    if(object=="point")
        drawControls["point"].activate();
    if(object=="pline")
        drawControls["line"].activate();  
    if(object=="polyg")
        drawControls["polygon"].activate();      
    document.onkeydown = keyHandle;
    if (arguments.length == 3){
        targetIframe = form;
        targetField = field;
    }
    document.body.style.cursor = 'crosshair';
    wfs.div.style.cursor = 'crosshair';

wfs.options.styleMap.styles.temporary.defaultStyle.externalGraphic="";
wfs.options.styleMap.styles.temporary.defaultStyle.pointRadius=4;
wfs.options.styleMap.styles.temporary.defaultStyle.strokeWidth=2;
wfs.options.styleMap.styles.temporary.defaultStyle.strokeOpacity=1;
//externalGraphic: "http://chm.natura2000.ro/resources/glowx2.gif",
	              
         //               pointRadius: 20,
         //               fillColor: "#888888",
         //               strokeColor: "#000000",
         //               strokeWidth: 1,
          //              strokeOpacity: 0.3,
          //              fillOpacity:0.3

}  
function stopDraw()
{
	drawControls["point"].deactivate();
	drawControls["line"].deactivate();
	drawControls["polygon"].deactivate();
	targetIframe = "";
       targetField = "";
 
       document.body.style.cursor = 'default';
       wfs.div.style.cursor = 'default';

wfs.options.styleMap.styles.temporary.defaultStyle.externalGraphic="http://chm.natura2000.ro/resources/glowx2.gif";
wfs.options.styleMap.styles.temporary.defaultStyle.pointRadius=20;
//wfs.options.styleMap.styles.temporary.defaultStyle.strokeWidth=1;
}     
function refreshlegend(cat_name)
{
	doGet("","mappa/getlegend.php?category="+category,"getlegend");
}  

function setcategory(cat_name,label)
{
	category=cat_name;
       $_("cattitle").innerHTML = label;
}

function refreshall()
{
wfs.options.protocol.params['category']=category;
wfs.redraw();
national_parks.params['category']=category;	
national_parks.redraw();	
refreshlegend(category);
}

function setlayerstatus(layer_name,layer_status)
{
doGet('','mappa/setlayerstatus.php?category='+category+'&layer='+layer_name+'&status='+layer_status,'setlayerstatus')	
}

function resize(){
	
	var newH = Math.round(getClientHeight() * (2 / 3));
	var i;

   if(!document.getElementById("header").style.height || document.getElementById("header").style.height=='390px')
    {
   
       document.getElementById('largemap').style.visibility = 'hidden'; document.getElementById('smallmap').style.visibility = 'visible';
    }
   else
   {
       
       document.getElementById('smallmap').style.visibility = 'hidden'; document.getElementById('largemap').style.visibility = 'visible';
   }

	//alert(document.getElementById("header").style.height);
    if(!document.getElementById("header").style.height || document.getElementById("header").style.height=='390px')
    {
	
           mapSize=newH;
           for (i=390;i<=newH;i++){
		  setTimeout('document.getElementById("header").style.height="'+i+'px"',i);
       }	
   }
	else
	{
          mapSize=390;
	   for (i=newH;i>=390;i--){
		  setTimeout('document.getElementById("header").style.height="'+i+'px"',newH-i);    
       }	    

   }
   setTimeout('map.updateSize()',newH); 

}

function get_my_url(bounds) {


    var res = this.map.getResolution();
    var z = this.map.getZoom();

    var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
    var y = Math.round ((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
/*
    var path = "data/tile/Z" +z+ "/" + y + "/" + x + ".png";

    var url = this.url;
   
      return url + path;
*/

   var path = "data/tile/Z" +z+ "/" + y + "/" + x + ".png";
   return path;

      
}

function generate_tile() {
    
var extmin=-20037508.34;
var extmax=20037508.34;

xmin=map.getExtent().left;
xmax=map.getExtent().right;

ymin=map.getExtent().bottom;
ymax=map.getExtent().top;


var path = "mappa/gettile.php?xmin=" + xmin + "&ymin=" + ymin +"&xmax=" + xmax+"&ymax=" + ymax;


doGet("",path,"");

}

var printarea=null;
function print2pdf() {
    var title = $_("title").value;
    var printbounds = printarea.getDataExtent();

    var basemap;

    if(der && map.baseLayer==der)
      basemap="der";
    
    if(of && map.baseLayer==of)
      basemap="of";

    if(topo && map.baseLayer==topo)
      basemap="topo";

    window.open("mappa/print2pdf.php?basemap=" + basemap + "&category=" + category + "&orientation=" + $_("orientation").value + "&title="+title+"&format="+$_("format").value+"&res=" + $_("quality").value + "&title=" + title + "&xmin=" + printbounds.left + "&ymin=" + printbounds.bottom+ "&xmax=" + printbounds.right+ "&ymax=" + printbounds.top, title);

    toggleDisplay($_("printdiv"));
    printarea.removeAllFeatures();
    printarea.destroy();
    printarea=null;
    return false;
}


function cancelPrint()
{
    toggleDisplay($_("printdiv"));
    printarea.removeAllFeatures();
    printarea.destroy();
    printarea=null;
    return false;
}
var printcontrols;
function startPrint()
{
//OpenLayers.Feature.Vector.style['default']['strokeWidth'] = '2';

  toggleDisplay($_("printdiv"));


printarea = new OpenLayers.Layer.Vector("Print Area");
map.addLayer(printarea);
map.setLayerZIndex(printarea,800);
printcontrols = { modify: new OpenLayers.Control.ModifyFeature(printarea) ,
                  select: new OpenLayers.Control.SelectFeature(
                  printarea,
                    {
                        clickout: false, toggle: false,
                        multiple: false, hover: false,
                        toggleKey: "ctrlKey", // ctrl key removes from selection
                        multipleKey: "shiftKey", // shift key adds to selection
                        box: true
                    }
                )
};

for(var key in printcontrols) {
     map.addControl(printcontrols[key]);
}

  printcontrols.modify.mode = OpenLayers.Control.ModifyFeature.RESHAPE;

  printcontrols.modify.mode |= OpenLayers.Control.ModifyFeature.RESIZE;
           
  printcontrols.modify.mode &= ~OpenLayers.Control.ModifyFeature.RESHAPE;
        
  printcontrols.modify.mode |= OpenLayers.Control.ModifyFeature.DRAG;

  printcontrols.modify.activate();
 // printcontrols.select.activate();

  drawprintarea();
}

function drawprintarea()
{
printarea.removeAllFeatures();


if($_("format").value=="A0")
 {
   printwidth=1189;
   printheight=841;
 }

if($_("format").value=="A3")
 {
   printwidth=420;
   printheight=297;
 }

if($_("format").value=="A4")
 {
   printwidth=297;
   printheight=210;
 }

if($_("format").value=="DER")
 {
   printwidth=840;
   printheight=680;
 }

if($_("orientation").value=="P")
{
var temp=printwidth;
printwidth=printheight;
printheight=temp;
}


var point = map.getCenter();

var mapres=(map.getExtent().top-map.getExtent().bottom)/(printheight*2);

var xmin=point.lon-((printwidth/2)*mapres);
var xmax=point.lon+((printwidth/2)*mapres);
var ymin=point.lat-((printheight/2)*mapres);
var ymax=point.lat+((printheight/2)*mapres);


var newPoint;
var pointList = [];

            
newPoint = new OpenLayers.Geometry.Point(xmin,ymax);
pointList.push(newPoint);

newPoint = new OpenLayers.Geometry.Point(xmax,ymax);
pointList.push(newPoint);

newPoint = new OpenLayers.Geometry.Point(xmax,ymin);
pointList.push(newPoint);


newPoint = new OpenLayers.Geometry.Point(xmin,ymin);
pointList.push(newPoint);
        
pointList.push(pointList[0]);
            
var linearRing = new OpenLayers.Geometry.LinearRing(pointList);
var polygonFeature = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing]));


printarea.addFeatures([polygonFeature]);
//printcontrols.select.select(polygonFeature);

}


// Prevent default actions
function prevention(e){
    if (!e) e = window.event;// For IE
    if (e.preventDefault) e.preventDefault();
    return false;
}


function keyHandle(e) {
    
    if (!e) e = window.event;// For IE
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;

    
//////////////pe tab se face save si refresh   
    if(code == 77 && e.ctrlKey) {
       
    }
    if(code == 90 && e.ctrlKey) {
 
    }
    if(code == 89 && e.ctrlKey) {
     //redo
    }
    //esc
        if(code == 27) {

     if(drawControls["line"].handler.active){
         var elem=drawControls["line"].handler.line.geometry.components.pop();
         drawControls["line"].handler.line.geometry.components.pop();
         drawControls["line"].handler.line.geometry.components.push(elem);
         drawControls["line"].handler.drawFeature();
     }
     if(drawControls["polygon"].handler.active){
         var elem=drawControls["polygon"].handler.line.geometry.components.pop();
         drawControls["polygon"].handler.line.geometry.components.pop();
         drawControls["polygon"].handler.line.geometry.components.push(elem);
         drawControls["polygon"].handler.drawFeature();
     }


    }
    if(code <= 40 && code >=33) {
       //   alert("aici");
       return prevention(e);
    }
  //  if(code == 38) {
       //   alert("aici");
   //    return prevention(e);
   // }

    // save form
    if(code == 83 && e.ctrlKey) {
         $_("save_lnk").onclick();
      return prevention(e);
    }
}


function search() {
    var searchStr = $_("search_str").value;
    if (searchStr != "") {
     doGet('','search.php?search_str=' + searchStr,'search');

    }
}

function zoomtoBBox(bbox){



str = bbox.substr(4);

if(!str)
   return;

str2 = str.split(',');
str3 = str2[0].split(' ');
str4 = str2[1].split(' ');
       if((parseFloat(str4[0])-parseFloat(str3[0]))<10000) {
           str3[0]=parseFloat(str3[0])-1000;
           str4[0]=parseFloat(str4[0])+1000;
       }

map.zoomToExtent(new OpenLayers.Bounds(str3[0],str3[1],str4[0],str4[1]));

}

function addlayerfunc(){

loadTab('categ_list', 'Category List', 'categList.php', true, true);

}
var templevel1;
var templevel2;
var temp_level_pointer;
function OnFHigh(e){
/*
templevel1=level1;
templevel2=level2;
temp_level_pointer=level_pointer;

if(e.feature.attributes["level1"])
  level_pointer="level1";

level1=e.feature.attributes["level1"];

if(e.feature.attributes["level2"])
  level_pointer="level2";

level2=e.feature.attributes["level2"];

changeBC();
*/
  
}

function OnFUnHigh(e){
/*
levell=templevel1;
level2=templevel2;
level_pointer=temp_level_pointer;


changeBC();
*/
}


