var queryFlag=0;
var cen;
var referencePointMarker,referencePoint,referencePoint1;
var placePointMarker,placePoint;
var startpointMarker,endpointMarker;
var startingPoint,endingPoint;
var placeOfficePoint,placeOfficePointMarker;
var lmPoint,lmpointMarker;
function initTools() 
{
	hideSidebar();
	
	referencePointMarker = new OpenLayers.Layer.Markers();
        map.addLayer(referencePointMarker);
        
        placePointMarker = new OpenLayers.Layer.Markers();
	map.addLayer(placePointMarker);
	
	startpointMarker = new OpenLayers.Layer.Markers();
        map.addLayer(startpointMarker);
        
        placeOfficePointMarker = new OpenLayers.Layer.Markers();
        map.addLayer(placeOfficePointMarker);
        
        endpointMarker = new OpenLayers.Layer.Markers();
        map.addLayer(endpointMarker);
        
        lmpointMarker = new OpenLayers.Layer.Markers();
        map.addLayer(lmpointMarker);
        
        
        Setcenter();
        northarrow();
        //leftArrow();
        navhistory();
        
       // getHelp(); 
        //vlayer = new OpenLayers.Layer.Vector( "Editable" );
       // map.addLayer(vlayer);
       // selectControl = new OpenLayers.Control.SelectFeature(vlayer,{onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});
        //map.addControl(selectControl);
        //selectControl.activate();
        
     	var optionsControl = {handlerOptions: {
        	style: "default",
                persist: true}};
	controls={
	    	zoom:new OpenLayers.Control.ZoomBox(),
	    	pan:new OpenLayers.Control.MouseDefaults(),
	    	line:new OpenLayers.Control.Measure(OpenLayers.Handler.Path, optionsControl),
	    	polygon: new OpenLayers.Control.Measure(OpenLayers.Handler.Polygon, optionsControl),
	    	click:new OpenLayers.Control.Click()
		//pointMark:  new OpenLayers.Control.DrawFeature(vlayer, OpenLayers.Handler.Point),
		//drag: new OpenLayers.Control.DragFeature(vlayer)
		};
	var control;
	for(var key in controls) 
	{
        	control = controls[key];
                //if(key=='pointMark'|| key=='drag')
                	//map.addControl(controls[key]);

		//else
		//{
			if((key=='line') ||(key=='polygon'))
			{
				control.events.on({"measure": measurements});
			}
		
		        map.addControl(control);
                //}
           }; 
           toolTip();
           document.getElementById("search").value="";
           getHelp();
	
}
function northarrow()
{
	var northArrow=document.createElement("div");
        northArrow.className="northArrow";
        northArrow.innerHTML="<img src='/giskerala/images/maptools/N-arrow.png' width='60px' height='60px' border=0 title='North Arrow' />";
        document.getElementById("map_OpenLayers_ViewPort").appendChild(northArrow);
        
}

function leftArrow()
{
	var leftArrow=document.createElement("div");
	leftArrow.setAttribute('id','leftArrow1');
        leftArrow.className="leftArrow";
        leftArrow.innerHTML="<img src='/giskerala/images/west-mini.png' width='20px' height='20px' border=0 title='Left Arrow' onclick='hideSidebar();' />";
        document.getElementById("middleBar").appendChild(leftArrow);
        
}
function navhistory(){
	var nav = new OpenLayers.Control.NavigationHistory();
	map.addControl(nav);
	var panel = new OpenLayers.Control.Panel({div: document.getElementById("panel")});
	panel.addControls([nav.next]);
	map.addControl(panel);
	var panel1 = new OpenLayers.Control.Panel({div: document.getElementById("panel1")});
	panel1.addControls([nav.previous]);
	map.addControl(panel1);
	//pDiv.appendChild(panel1);
}
function getHelp1()
{
	var divid=document.getElementById("sidebarContent");
	divid.innerHTML="";
	//showSidebar();
	var sr=	"<div id=helpcontent class=helpContent ><span><h2>HELP </h2></span><ul><li><a HREF=# onclick=window.open(\'/igsg/help#toolhelp\')>How can I use all the mapping tools ?</a></li><li><a HREF=# onclick=window.open(\'/igsg/help#searchHelp\')>How do I search in map ?</a></li><li><a HREF=# onclick=window.open(\'/igsg/help#placeHelp\')>How I can locate a place?</a></li><li><a HREF=# onclick=window.open(\'/igsg/help#pathHelp\')>How can I find the shortest path  between two places?</a></li><li><a HREF=# onclick=window.open(\'/igsg/help#helpHelp\')>How can I see the Help Document for this application ?</a></li></ul></div>"
	divid.innerHTML=sr;	
	clearAllmarkers();
}            	
function showSidebar()
{
 	var mapdiv=document.getElementById("map");
	var sidebar=document.getElementById("centerLeft");
	var leffArrows=document.getElementById("leftArrow1");
	var sidebarController=document.getElementById("middleBar");
	leffArrows.innerHTML="<img onclick='hideSidebar();' src='/giskerala/images/west-mini.png' id='resizer' title='Maximize map window' width=20 height=20 />";
	sidebarController.style.left="28%";
	mapdiv.style.marginLeft="30%";
	mapdiv.style.width="70%";
	sidebar.style.width="28%";
	//document.getElementById("panZoomBarDiv").style.marginLeft="32%";
	adjustCenter();
}
function hideSidebar()
{
	var mapdiv=document.getElementById("map");
	var sidebar=document.getElementById("centerLeft");
	var sidebarController=document.getElementById("middleBar");
	//mapdiv.style.marginLeft="0%";
	mapdiv.style.width="98%";
	//mapdiv.style.borderLeft="0px";
	sidebarController.style.left="0px";
	sidebar.style.width="0%";
	var leffArrow1=document.getElementById("leftArrow1");
	leftArrow1.innerHTML="<img onclick='showSidebar();' src='/giskerala/images/east-mini.png' id='resizer' title='Minimize map window' width=20 height=20 />";
	//document.getElementById("panZoomBarDiv").style.marginLeft="3%";
	adjustCenter();
	
}
function adjustCenter()
{
	var bounds=map.getExtent();
	var center1=bounds.getCenterLonLat();
	map.setCenter(center1,Math.round(map.getScale()));
}
function leftArrow()
{
	var leftArrow=document.createElement("div");
	leftArrow.setAttribute('id','leftArrow1');
        leftArrow.className="leftArrow";
        leftArrow.innerHTML="<img src='/giskerala/images/west-mini.png' width='20px' height='20px' border=0 title='Left Arrow' onclick='hideSidebar();' />";
        document.getElementById("map_OpenLayers_ViewPort").appendChild(leftArrow);
        
}

function changeMode(id){
	try
	{
		//alert(id);
		dijit.byId('toast2').hide();
		dijit.byId('toast1').hide();
		dijit.byId("linemeasure").hide();
		dijit.byId("areameasure").hide();
		Setcenter();
		if((queryFlag==1) && (id!="toolQuery")){
			map.events.unregister('mousedown',map,handleMapClick);
			map.removeLayer(highlitelayer);
			highlitelayer="";			
			queryFlag=0;
		}
		for(key in controls) {
			//alert(id+","+key);
	       		var control = controls[key];
			if(id==key) 
			{
				//alert(id);
				control.activate();
				document.getElementById(key).src='/giskerala/images/maptools/'+key+'2.png';	
			}
			else 
			{
				control.deactivate();
				if(key!="click"){
		                        document.getElementById(key).src='/giskerala/images/maptools/'+key+'1.png';
		                }
			}
		}
	 	if(id=="toolZoomFull"){
                        document.getElementById("pan").src='/giskerala/images/maptools/pan2.png';
                        document.getElementById("toolQuery").src='/giskerala/images/maptools/toolQuery1.png';
                       /* if(startingPoint!=undefined) 
			{
				startpointMarker.removeMarker(startingPoint);
			}
			if(endingPoint!=undefined) 
			{
				endpointMarker.removeMarker(endingPoint);
			}*/
			if(placePoint!=undefined) 
				placePointMarker.removeMarker(placePoint);
			if(placeOfficePoint!=undefined)
			{ 
				placeOfficePointMarker.removeMarker(placeOfficePoint);
				placeOfficePoint.destroy();
				placeOfficePoint=null;
			}
		       /* if(gml)
			{
				map.removeLayer(gml);
				gml.destroy();
				gml=null;
			}*/
			if(highlitelayer)
			{
				map.removeLayer(highlitelayer);
				highlitelayer.destroy();
				highlitelayer=null;
			}
					
			//getHelp();
			/*dijit.byId('SPremove').hide();
			dijit.byId('loaterRemove').hide();
			dijit.byId('placeIndicator').hide();
			dijit.byId('highliteRemove').hide();*/
			
		 }
		 else if(id=="toolQuery")
		 {
		 	document.getElementById(id).src='/giskerala/images/maptools/'+id+'2.png';
                        document.getElementById("toolZoomFull").src='/giskerala/images/maptools/toolZoomFull1.png';
                        map.events.register('mousedown',map, handleMapClick);
			//return ;
                }
               // else if(id=="pointMark")
                //{
		 	
			//getNewLandmarkList();
               // }
               else
                {
                        document.getElementById("toolZoomFull").src='/giskerala/images/maptools/toolZoomFull1.png';
                        document.getElementById("toolQuery").src='/giskerala/images/maptools/toolQuery1.png';
                        dijit.byId('toast2').hide();
			dijit.byId('toast1').hide();
                }
		 dijit.byId('toast2').hide();
		 dijit.byId('toast1').hide();
	}
	catch(err)
	{
		queryFlag=0;
		
	}
	
}
function clearAllmarkers()
{
	if(startingPoint!=undefined) 
	{
		startpointMarker.removeMarker(startingPoint);
	}
	if(endingPoint!=undefined) 
	{
		endpointMarker.removeMarker(endingPoint);
	}
	if(placePoint!=undefined) 
		placePointMarker.removeMarker(placePoint);
	if(placeOfficePoint!=undefined)
	{ 
		placeOfficePointMarker.removeMarker(placeOfficePoint);
		placeOfficePoint.destroy();
		placeOfficePoint=null;
	}
	if(gml)
	{
		map.removeLayer(gml);
		gml.destroy();
		gml=null;
	}
	if(highlitelayer)
	{
		map.removeLayer(highlitelayer);
		highlitelayer.destroy();
		highlitelayer=null;
	}
}
function measurements(event) {
	var geometry = event.geometry;
	var units = event.units;
	var order = event.order;
	var measure = event.measure;
	dijit.byId('toast1').hide();
        dijit.byId('toast2').hide();
	var out;
        if(order == 1)
        {
        	out=measure.toFixed(3);
                if (map.getProjection() == "EPSG:4326") 
                {
                   out =calcVincenty(geometry).toFixed(3); 
                }  
              	displayDistance(out,'distance',units);		    
        } 
        else 
        {        	
               out=measure.toFixed(3);
               displayDistance(out,'area',units);              
        }         
}
var distanceDiv=0;
function displayDistance(value , type,units)
{
	getHelp();
	var msg="";
	var unit="";
	if (type=='distance')
	{
		msg='Linear Distance';
		unit=units;
	}
	else
	{
		msg='Area';
		unit=units+"<sup>2<sup>"
	}
	showSidebar();
	var parentDiv=document.getElementById("sidebarContent");
	parentDiv.innerHTML="";
	var searchOptionDiv=document.createElement("div");
	searchOptionDiv.className="searchOptionDiv";
	distanceDiv++;
	searchOptionDiv.innerHTML="<div id=distanceContainer"+distanceDiv+" style='height: 99%; overflow: hidden;'><div id=disPane_1"+distanceDiv+" style='height:auto;overflow:auto;visibility:hidden;padding-left:5%;padding-top:10%;'><center><br><br><span>"+msg+": "+value+" "+unit+"</span></center></div></div>";
	parentDiv.appendChild(searchOptionDiv);
	adjustCenter();
	
	var acp1=new dijit.layout.AccordionPane(
	{
		title:msg				
	}, document.getElementById("disPane_1"+distanceDiv));
	acp1.startup();
	
	var ac=new dijit.layout.AccordionContainer(
	{
		duration:200				
	}, document.getElementById("distanceContainer"+distanceDiv));
	ac.startup();
}
function cancelDraw(id)
{
	for(var key in controls) 
	    {
                control = controls[key];
		control.deactivate();
		document.getElementById("pan").src='/giskerala/images/maptools/pan2.png';
		document.getElementById("line").src='/giskerala/images/maptools/line1.png';
		document.getElementById("polygon").src='/giskerala/images/maptools/polygon1.png';
           }
	
}
function calcVincenty(geometry) {
            var dist = 0;
            for (var i = 1; i < geometry.components.length; i++) {
                var first = geometry.components[i-1];
                var second = geometry.components[i];
                dist += OpenLayers.Util.distVincenty(
                    {lon: first.x, lat: first.y},
                    {lon: second.x, lat: second.y}
                );
            }
            return dist;
} 
function showtoasterLine(id)
{
	if(id=='line')
	{
		dijit.byId('toast2').hide();	
 		dijit.byId('toast1').show();
 	} 		
 	else if(id=='polygon')
 	{
 		dijit.byId('toast1').hide();
		dijit.byId('toast2').show();
	}
}

function Setcenter()
{
	var bounds=map.getExtent();
	cen=bounds.getCenterLonLat();
	if(referencePoint!=undefined) 
	{
		referencePointMarker.removeMarker(referencePoint);
	}
	var size = new OpenLayers.Size(25,25);
	var icon = new OpenLayers.Icon("/giskerala/images/plus.png",size);
	referencePoint=new OpenLayers.Marker(cen,icon);
	referencePointMarker.addMarker(referencePoint);
	//center=cen;
}
function toolTip()
{
	new dijit.Tooltip({
          connectId: ["pan"],
          label: "<b>Click and drag to navigate the map</b>"
      });
       new dijit.Tooltip({
          connectId: ["zoom"],
          label: "<b>Click and drag to zoom in</b>"
      });
      new dijit.Tooltip({
          connectId: ["toolZoomFull"],
          label: "<b>Zoom out to full extend</b>"
      });
      new dijit.Tooltip({
          connectId: ["toolQuery"],
          label: "<b>Click on map symbols (office, place, roads or hydrology) for more information</b>"
      });
      new dijit.Tooltip({
          connectId: ["line"],
          label: "<b>Distance Calculator</b>"
      });
      new dijit.Tooltip({
          connectId: ["polygon"],
          label: "<b>Area Finder</b>"
      });
      new dijit.Tooltip({
          connectId: ["panel"],
          label: "<b>Goto next </b>"
      });
      new dijit.Tooltip({
          connectId: ["panel1"],
          label: "<b>Goto previous </b>"
      });
      new dijit.Tooltip({
          connectId: ["pointMark"],
          label: "<b>Add a Landmak/placename </b>"
      });
}
function getHelp()
{
	var divid=document.getElementById("sidebarContent");
	divid.innerHTML="";
	showSidebar();
	var sr=	"<div style='padding:5px;'><div style='padding-left:5%;padding-right:8px;height:97%;border:2px solid #d9d5d1;overflow:hidden;color:#374055;font-size:12px;text-align:justify;text-justify: newspaper '><p style=text-indent:10px;><span style=font-size:12px;font-weight:bold;>GIS kerala</span> is an initiative to geo-visualise kerala, with various datasets available  with different government agencies.Through this the user, the public, get various information rendered through the map based interface.</p><table ><tr><td><table style='border-collapse:seperate;border-spacing:6pt 3pt;font-size:12px;'><tr><td colspan=2><b>A project of</b></td></tr><tr><td ><img src=/giskerala/images/KSITM.jpg width=45 height=50 /></td><td>Kerala State IT Mission <b>(KSITM)</b></td></tr><tr><td colspan=2><b>Developed by</b></td></tr><tr><td ><img src=/giskerala/images/keltron1.png width=50 height=48 /></td><td>Kerala State Electronics Development Corporation <b>(KELTRON)</b></td></tr></table></td></tr><tr><td><table style=font-size:12px;><tr><td><b>Data Provided By</b></td></tr><tr><td td colspan=2>Center For Earth Science Studies <b>(CESS)</b></td></tr><tr><td><img src=/giskerala/images/keralaitsmalllogo.jpg /></td><td><img src=/giskerala/images/logo.png /></td></tr></table></td></tr></table></div></div>";	
	divid.innerHTML=sr;	
	clearAllmarkers();
}

