/*************************************************************************
 * $Id: referencepoint.js ,v 1.2 2009/09/29 02:02:40 pm
 
 * author: Najima Muhammad 
 
 * modifications by : Najima Muhammad 
 
 * Copyright (c) 2009, Keltron Consultancy services.
 
**************************************************************************/

var center1;
var moveFlag=0,moveFlag1=0,moveSetFlag=0,movepointflag=0;
var selMovVal="";
var reflonglat;
var searchForStore = new dojo.data.ItemFileWriteStore({data: {identifier: 'option', items:[{"option": "Point"},{"option": "Place"}, {"option": "Office"}]}});

/******* GOTO REFERENCE POINT ****************/
function gotoReferencepoint()
{
	if(moveSetFlag==1)
	{
		map.setCenter(center1,7);
	}
}

/******* CREATE CHANGE_REFERENCE_POINT FORM *****************/
function changeReferencepoint()
{
	showSidebar();
	var parentDiv=document.getElementById("sidebarContent");
	parentDiv.innerHTML="";
	var searchOptionDiv=document.createElement("div");
	searchOptionDiv.setAttribute('id','rfPoint');
	searchOptionDiv.className="searchOptionDiv";
	moveFlag++;
	searchOptionDiv.innerHTML="<div id=mvContainer"+moveFlag+" style='height: 100%; overflow: hidden;'><div id=movePane_1"+moveFlag+" style='height:auto;overflow:auto;visibility:hidden;padding-left:5%;padding-top:10%;'><center><br><br><div id=cPosition></div><br><div id=moveMe><table><tr><td>Move me to</td><td id=moveTd></td></tr><tr><td id=place_officeTd></td><td id=moveValueTd></td></tr><tr><td colspan=2><center><span id=clearme></span><span id=findMe></span></center></td></tr></table></div></center></div><div id=movePane_2"+moveFlag+" style='height:auto;overflow:auto;visibility:hidden;padding-left:7%;background-color:#f3fcfd;'><div id=moveToResult></div></div></div>";
	parentDiv.appendChild(searchOptionDiv);
	adjustCenter();
	
	
	var searchForTd=document.getElementById("moveTd");
	var searchForCombobox= new dijit.form.ComboBox(
	{
		name:"moveme",
		id:"moveto"+moveFlag,
		store: searchForStore,
		searchAttr:"option",
		onChange:getMoveto
		},  document.createElement('div'));	
	searchForTd.appendChild(searchForCombobox.domNode);
	searchForCombobox.startup();
	
	
		
		
	var cancelButtonTd=document.getElementById("clearme");
	var  cancelButton= new dijit.form.Button(
	{ 
		id:"clearme"+moveFlag,
		onClick:killrfPointDiv,
		label: "Cancel",
		alt: "My button",
		title: "Cancel Button"
	}, document.createElement('div'));
        cancelButtonTd.appendChild(cancelButton.domNode);
	cancelButton.startup();
	
	var acp1=new dijit.layout.AccordionPane(
	{
		title:'Set Reference Point',
		id:"rfpnt"+moveFlag,
		selected:true
	}, document.getElementById("movePane_1"+moveFlag));
	acp1.startup();
	var acp2=new dijit.layout.AccordionPane(
	{
		title:' ',
		id:"rfResulfFields"+moveFlag				
	}, document.getElementById("movePane_2"+moveFlag));
	acp2.startup();
	
	var ac=new dijit.layout.AccordionContainer(
	{
		duration:200,
		id:"refPointPane"+moveFlag
				
	}, document.getElementById("mvContainer"+moveFlag));
	ac.startup();
	
	var cPosition=document.getElementById("cPosition");
	if(moveSetFlag==0)
		cPosition.innerHTML="<span style=color:red>Reference point is not set</span>";
	else
	{
			cPosition.innerHTML="Me is now in <span style=color:#8c0a84 ><b>"+selMovVal+"</b></span>";
			document.getElementById("myPositionImg").title=selMovVal;
			
	}
	if(movepointflag==1)
	{
			cPosition.innerHTML=" <span style=color:#8c0a84 ><b>Reference point has set</b></span>";
			document.getElementById("myPositionImg").title="Reference point has set";
			
	}	
}

/******* CREATE DYNAMIC SECTION OF CHANGE_REFERENCE_POINT FORM**********************/
function getMoveto(value)
{
	moveFlag1++;
	var moveTd=document.getElementById("moveValueTd");
	moveTd.innerHTML="";
	if(value!='Current map center')
	{
		movepointflag=0;
		map.events.unregister('mousedown',map,refPoint);
		if(value=='Place')
			document.getElementById("place_officeTd").innerHTML="Place Name";
		else if(value=='Office')
			document.getElementById("place_officeTd").innerHTML="Office Name";
		
		var moveToTextbox= new dijit.form.TextBox(
		{
			name:"moveme1",
			id:"movevalue"+moveFlag1
		
		},  document.createElement('div'));	
		moveTd.appendChild(moveToTextbox.domNode);
		moveToTextbox.startup();
		
		var searchButtonTd=document.getElementById("findMe");
		searchButtonTd.innerHTML="";
		var  searchButton= new dijit.form.Button(
		{ 
			id:"findMe"+moveFlag1,
			label: "Search",
			alt: "My button",
			title: "Search Button",
			onClick:listPlaceOffice
		}, document.createElement('div'));
		searchButtonTd.appendChild(searchButton.domNode);
		searchButton.startup();
	}
	else
	{
		map.events.unregister('mousedown',map,refPoint);
		movepointflag=0;
		var searchButtonTd=document.getElementById("findMe");
		searchButtonTd.innerHTML="";
		var  searchButton= new dijit.form.Button(
		{ 
			id:"findMe"+moveFlag1,
			label: "SET",
			alt: "My button",
			title: "Search Button",
			onClick:gotoDefault
		}, document.createElement('div'));
		searchButtonTd.appendChild(searchButton.domNode);
		searchButton.startup();
	}
	if(value=='Point')
	{
		movepointflag=0;
		map.events.register('mousedown',map,refPoint);
		document.getElementById("place_officeTd").innerHTML="";
		moveTd.innerHTML="<span style=color:red;>(Right Click on the map to select the point)</span>";
		var searchButtonTd=document.getElementById("findMe");
		searchButtonTd.innerHTML="";		
	}
	
		
}


/******* CALL RIGHT CLICK EVENT **********************/
function refPoint(e)
{
	var ieClick=0,mozClick=0;
	if (navigator.appName == 'Microsoft Internet Explorer')
		ieClick=event.button;
	else
		mozClick=e.which;
	if(ieClick==2 || mozClick==3)
	{
		setbutton();
		var size = new OpenLayers.Size(20,25);
		var icon = new OpenLayers.Icon("/giskerala/images/person.png",size);
		reflonglat=map.getLonLatFromViewPortPx(e.xy);		
		if(referencePoint1!=undefined) 
		{
			referencePointMarker.removeMarker(referencePoint1);
		}
		referencePoint1=new OpenLayers.Marker(reflonglat,icon);
		referencePointMarker.addMarker(referencePoint1);
		
	}
}


/******* LIST PLACE/OFFICE FOR SELECTING START/END POINT *******************/
function listPlaceOffice()
{
	var id="moveto"+moveFlag;
	var layer1=dijit.byId(id).value;
	if(layer1=='Current map center')
	{
		var size = new OpenLayers.Size(20,25);
		var icon = new OpenLayers.Icon("/giskerala/images/maptools/person.png",size);
		var bounds=map.getExtent();
		cen=bounds.getCenterLonLat();
		//center1=cen;
		map.setCenter(cen,7);
		if(referencePoint1!=undefined) 
		{
			referencePointMarker.removeMarker(referencePoint1);
		}
		referencePoint1=new OpenLayers.Marker(cen,icon);
		referencePointMarker.addMarker(referencePoint1);
		moveSetFlag=0;
		searchForStore = new dojo.data.ItemFileWriteStore({data: {identifier: 'option', items:[{"option": "Place"}, {"option": "Office"}]}});
		var cPosition=document.getElementById("cPosition");
		cPosition.innerHTML="<span style=color:red>Reference point is not selected</span>";
		document.getElementById("myPositionImg").title="Reference point is not selected";
	}
	else
	{
		//var id="moveto"+moveFlag;
		var id1="movevalue"+moveFlag1;
		//var layer1=dijit.byId(id).value;
		var layerValue=dijit.byId(id1).value;
		var name1=new Array();
		var gid=new Array();
		var layer=new Array();
		var x=new Array();
		var y=new Array();
		var divid=document.getElementById("moveToResult");
		divid.innerHTML="";
		var Content="";
	
	
		showLoader("moveToResult")
		if(layer1=='Place')
		{
			moveStore=new dojo.data.ItemFileWriteStore({url:"/igsg/list/?layer=Place&name="+layerValue});
		}
		else if(layer1=='Office')
		{
			moveStore=new dojo.data.ItemFileWriteStore({url:"/igsg/office/?layer=Office&name="+layerValue+"&service=&dept=&subdept=&within_layer=&within_name="});
		}
		var request=moveStore.fetch({onComplete:function(items, request)
		{
			if(items.length<1)
			{
				divid.innerHTML="<br><br><center><span style=color:red;font-weight:bold;>No matching result found !!!...</span></center>";
			}
			else
			{
				for(var i=0;i<items.length;i++)
				{
					name1[i]=moveStore.getValue(items[i],'name');
					layer[i]=moveStore.getValue(items[i],'layer');
					gid[i]=moveStore.getValue(items[i],'gid');
					x[i]=moveStore.getValue(items[i],'x');
					y[i]=moveStore.getValue(items[i],'y');
					Content +="<ul ><li><b><a href=# onclick=getCurrentPoint("+gid[i]+",'"+layer[i]+"',"+x[i]+","+y[i]+")>"+name1[i]+"</a></b></li></ul><br>";
			
				}
				divid.innerHTML="<div class=advresult><br>"+Content+"</div>";
			}
		},onError:moveError});
		dijit.byId("rfpnt"+moveFlag).setSelected(false);
		dijit.byId("rfResulfFields"+moveFlag).setSelected(true);
		dijit.byId("refPointPane"+moveFlag).selectChild(dijit.byId("rfResulfFields"+moveFlag));
	}
	
	
}

/******* POINT TO DEFAULT POSITION (CURRENT MAP CENTER) ************/
function gotoDefault()
{
	map.events.unregister('mousedown',map,refPoint);
	if(referencePoint1!=undefined) 
		referencePointMarker.removeMarker(referencePoint1);
	moveSetFlag=0;
	searchForStore = new dojo.data.ItemFileWriteStore({data: {identifier: 'option', items:[{"option": "Point"},{"option": "Place"}, {"option": "Office"}]}});
	var cPosition=document.getElementById("cPosition");
	cPosition.innerHTML="<span style=color:red>Reference point is not selected</span>";
	document.getElementById("myPositionImg").title="Reference point is not selected";
	killrfPointDiv();
	changeReferencepoint();
	
}



/******* CREATE SET BUTTON **************/
function setbutton()
{
		
		var searchButtonTd=document.getElementById("findMe");
		searchButtonTd.innerHTML="";
		var  searchButton= new dijit.form.Button(
		{ 
			label: "SET",
			alt: "My button",
			title: "SET Reference point",
			onClick:gotoPoint
		}, document.createElement('div'));
		searchButtonTd.appendChild(searchButton.domNode);
		searchButton.startup();
}

/******* SHOW ERROR MESSAGE *************/
function moveError(er)
{
	alert(er);
	var divid=document.getElementById("moveToResult");			
	divid.innerHTML="";
	divid.innerHTML="<div id=advserchloading class=advserchloading style=color:red;><center>Unable to load the result !!!<br>Please try after some time...</center></div>";
}


/******* ZOOM TO THE NEW REFERENCE POINT*********************/
function gotoPoint()
{
	map.events.unregister('mousedown',map,refPoint);
	searchForStore = new dojo.data.ItemFileWriteStore({data: {identifier: 'option', items:[{"option": "Current map center"},{"option": "Point"},{"option": "Place"}, {"option": "Office"}]}});
	var cPosition=document.getElementById("cPosition");
	cPosition.innerHTML="<span style=color:red>Reference point has moved</span>";
	document.getElementById("myPositionImg").title="Reference point has moved";
	map.setCenter(reflonglat,6);
	movepointflag=1;
	killrfPointDiv();
	changeReferencepoint();
}


/******* DELETE THE REFERENVEPOINT FORM *****************/
function killrfPointDiv()
{
	if(document.getElementById("rfPoint")!=null)
		removeElement("rfPoint");
	getHelp();
	adjustCenter();
	
	
}

/******* SHOW THE LOADING IMAGE***************/
function showLoader(divname)
{
	var divid=document.getElementById(divname);			
	divid.innerHTML="";
	divid.innerHTML="<div id=advserchloading class=advserchloading ><center>searching...<br><img src='/giskerala/images/loading1.gif' /></center></div>";
}



/******* GET THE NEW RERERENCE POINT*****************/
function getCurrentPoint(id,layer1,x,y)
{
	var layer=new Array();
	var gid=new Array();
	var size = new OpenLayers.Size(20,25);
	var icon = new OpenLayers.Icon("/giskerala/images/maptools/person.png",size);
	center1=new OpenLayers.LonLat(x,y);
	map.setCenter(center1,7);
	if(referencePoint1!=undefined) 
	{
		referencePointMarker.removeMarker(referencePoint1);
	}
	referencePoint1=new OpenLayers.Marker(center1,icon);
	referencePointMarker.addMarker(referencePoint1);
	var request=moveStore.fetch({onComplete:function(items, request)
	{
		for(var i=0;i<items.length;i++)
		{
			
			layer[i]=moveStore.getValue(items[i],'layer');
			gid[i]=moveStore.getValue(items[i],'gid');
			if(layer[i]==layer1 && gid[i]==id)
			{
				selMovVal=moveStore.getValue(items[i],'name');
				moveSetFlag=1;
				searchForStore = new dojo.data.ItemFileWriteStore({data: {identifier: 'option', items:[{"option": "Current map center"},{"option": "Point"},{"option": "Place"}, {"option": "Office"}]}});
				//center=center1;
			}
		}
			
		
	},onError:moveError});
	var cPosition=document.getElementById("cPosition");
	cPosition.innerHTML="Me is now in <span style=color:#8c0a84 ><b>"+selMovVal+"</b></span>";
	document.getElementById("myPositionImg").title=selMovVal;
	killrfPointDiv();
	changeReferencepoint();
	
}

