//handler for location page functionality

//console.log(('started');

 document.observe('dom:loaded', initLocation);


var localSearch = new GlocalSearch();
var gTransportType = '';

//console.log(('listener');

function usePointFromPostcode(postcode, callbackFunction) {
  
  localSearch.setSearchCompleteCallback(null,
    function() {
      
      if (localSearch.results[0]) {  
	  
        var resultLat = localSearch.results[0].lat;
        var resultLng = localSearch.results[0].lng;
      //  var point = new GLatLng(resultLat,resultLng);
		 var point = resultLat+','+resultLng;
        callbackFunction(point);
      }else{
        alert("Postcode not found!");
      }
    });  
    
  localSearch.execute(postcode + ", UK");

}

function isValidPostcode(p) {
	var postcodeRegEx = /[A-Z]{1,2}[0-9]{1,2} ?[0-9][A-Z]{2}/i;
	return postcodeRegEx.test(p);
}

var _postcode = '';




function initLocation(){

	//google.load("maps", "2");

	var _submit = $('doSubmit');
	_submit.observe('click', handlePostcodeForm);


	/*var _locEditDrag = new Draggable('init_content', {handle: 'upper_editorial_handle', snap: function(x, y) {
            return[ (x < 1200) ? (x > -200 ? x : -200 ) : 1200,
                    (y < 800) ? (y > 0 ? y : 0) : 800 ];
    }});*/
	
	
	var _locMainDrag = new Draggable('display_content', {handle: 'large_editorial_handle',onEnd:function(){
	if (parseInt($('display_content').style.top.split('px')[0]) < 100) {
		var xpos = parseInt($('display_content').style.left.split('px')[0]);
		var _emergency = new Effect.Move('display_content',{y:120,x:xpos,mode:'absolute'})
	}
	
}});
	
/*	var _locMainDrag = new Draggable('display_content', {handle: 'large_editorial_handle', snap: function(x, y) {
            return[ (x < 1200) ? (x > -200 ? x : -200 ) : 1200,
                    (y < 800) ? (y > 0 ? y : 0) : 800 ];
    }});
	
	*/
	

	
var haygarthLoc = new GLatLng(51.42517,-0.218997);
var dogAndFox = new GLatLng(51.431484,-0.213375);

var haygarthPov = {yaw:90};

panoramaOptions = { latlng:haygarthLoc, pov:haygarthPov };
myPano = new GStreetviewPanorama(document.getElementById("fullGViewDisplay"), panoramaOptions);


}

function handlePostcodeForm(event){

	gTransportType = '';

	_postcode = $('postcode').value;
	if(_postcode == ''){
	//handle error
	$('postcode_error').innerHTML = 'invalid input'
	}
	
	else{
			
	//switch on travel options and add events
		$('postcode_error').innerHTML = '';
		
		if(isValidPostcode(_postcode)){
			
			if($('on_car').checked == true){
				showRoad();
			}
			if($('on_foot').checked == true){
				showFoot();
			}
			
		}
		
		else{
			$('journey_rail').style.visibility = 'visible';
			$('journey_rail').observe('click', showRail);	
		}
	

	
	}
	
	//little prototypeJS trick to stop the form handling (equivalent to return false in traditional js)
	Event.stop(event);
}

function showRoad(){

	$('gmap_directions').innerHTML = '';
	gTransportType = 'road';
	usePointFromPostcode(_postcode, showGMap);

}

function showFoot(){

	$('gmap_directions').innerHTML = '';
	gTransportType = 'foot';
	usePointFromPostcode(_postcode, showGMap);
}

function showRail(){
	
	Effect.Appear('display_content');
	$('gmap_directions').innerHTML = '';
	
	$('gmap_display').innerHTML = '<iframe id="rail_frame" height="390" width="500" src="http://pda.ojp.nationalrail.co.uk/en/pj/pj" scrolling="auto" style="position: relative; top: -20px; left: -160px;"></iframe>';	
	
	$('rail_frame').observe('load', populateRailFrame);
	
	
}


function populateRailFrame(){
	
}

function showGMap(point){
	
	
	Effect.Appear('display_content');
	//$('display_content').style.visibility = 'visible';
	
	var p = point.split(',');
	
	var _map = new GMap2(document.getElementById('gmap_display'));
  	_map.setCenter(new google.maps.LatLng(51.425231,-0.219404), 13);
	
	_map.addControl(new GLargeMapControl());
	
	var _dir = new GDirections(_map, $('gmap_directions'));
	var _diropts = {
	
	}
	if(gTransportType == 'road'){
		_dir.load(p+' to 51.42517,-0.218997', {'travelMode':G_TRAVEL_MODE_DRIVING, 'preserveViewport':true});
	}
	else{
		_dir.load(p+' to 51.42517,-0.218997', {'travelMode':G_TRAVEL_MODE_WALKING, 'preserveViewport':true});	
	}
	gTransportType = '';
	//_map.setZoom(5);
	
	var _flash = $('panoflash1');
	
}

