//***************************************************************************
//  THE FILE IS PROVIDED "AS IS". IN NO EVENT SHALL SOUTHWARK COUNCIL 
//  BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY RESULTING 
//  FORM THE USE OF THIS FILE
//***************************************************************************
//  THIS JAVASCRIPT FILE HAS BEEN CREATED BY SOUTHWARK COUNCIL 
//  THIS WILL ADD FUNCTIONALITY TO CONTROL THE START LOCATION OF 
//  STRATUS CONNECT VIA A QUERY STRING (USING AN x, y & z VALUE)
//  LAST UPDATED OCT 2010
//***************************************************************************

// CREATE ALL THE VARIABLES FOR THE QUERY STRING
var userX = 0;
var userY = 0;
var userZ = 0;

//THE FOLLOWING 2 VARIABLES ARE USED TO ENSURE THE MAP IS READY TO ACCEPT EXTERNAL COMMANDS
var mapexists = this.myMap;
var checkmyMapcount = 0;


// READ THE QUERY STRING
function getQueryVariable(variable){  
	var query = window.location.search.substring(1);  
	var vars = query.split("&");  
	for (var i=0;i<vars.length;i++){    
		var pair = vars[i].split("=");    
		if (pair[0] == variable){      
			return pair[1];    
		}  
	} 	  
}
// POPULATE OUR VARIABLES FROM THE QUERY STRING
userX = getQueryVariable("x");
userY = getQueryVariable("y");
userZ = getQueryVariable("z");


// Set DOJO function to wait until the page has loaded before continuing 
dojo.addOnLoad(function(){
//  IF AN X & Y ARE IN THE QUERY STRING CHECK THE MAP IS READY
	if(userX > 0){
		if(userY > 0){
			checkmyMap();
	}} else {
		if(userZ > 0){
			checkmyMap();
		}
	}
	// Openlayers - Displays XY on the map
	myMap.getOLMap().addControl(new OpenLayers.Control.MousePosition());
})


// CHECKING THE MAP OBJECT EXISTS
function checkmyMap(){
	if(mapexists != null){
		mapexists = "YES";
		movemyMap();
	}else{
		checkmyMapdelay();
		mapexists = this.myMap;
		checkmyMapcount = checkmyMapcount +1;
	}			
}

// ADD A DELAY AND RECHECK THE MAP OBJECT IS READY (ALLOW 5 ATTEMPTS)
function checkmyMapdelay(){
	if (checkmyMapcount < 5){
		setTimeout("checkmyMap()",1000);
	}
}


// Move the map if the mapexists is set to YES
function movemyMap(){
	if(mapexists == "YES"){
// IF ONLY Z VALUE WAS IN THE QUERY STRING CHANGE THE ZOOM LEVEL ONLY
        if (userX || userY){
		//do nothing
	} else {
		if(userZ > 0){
 		var OLXY = myMap.getOLMap().getExtent().getCenterLonLat();
 		userX = parseInt(OLXY.lon);
 		userY = parseInt(OLXY.lat);
	}}
	if(userX > 0){
		if(userY > 0){
			var configuration = this.myMap.getConfiguration();
			var maxZoomLevels = configuration.zoomLevels.getLevelCount();
			var mapSrs = myMap.configuration.getProjectionSystem();
// IF ALL VALUES WERE IN THE QUERY STRING CHANGE THE LOCATION AND ZOOM
				if(userZ > 0 && userZ <=maxZoomLevels){     	        		
     	       				this.myMap.moveToAndZoom({x: userX, y: userY, srs: mapSrs},userZ);	
				} else {
// IF ONLY X & Y VALUES WERE IN THE QUERY STRING CHANGE THE LOCATION ONLY
					this.myMap.moveTo({x: userX, y: userY});
				}
			}
		}
	}
}
