/**
 * TerraPages WMS Layer
 */
var wmscdev = [
			"http://wmsc1.terrapages.net/getmap?",
			"http://wmsc2.terrapages.net/getmap?",
			"http://wmsc3.terrapages.net/getmap?",
			"http://wmsc4.terrapages.net/getmap?"
];
var terrapagesStreetLayer = new OpenLayers.Layer.WMS( "TerraPages&nbsp;Street",wmscdev, {layers: 'UnprojectedStreet', format: 'image/jpeg' }, {buffer: 1, isBaseLayer: true} );


function addMarkerToLayer(markersLayer,lon,lat,name){
	var lonlat = new OpenLayers.LonLat(lon,lat);
	var newMarker = new OpenLayers.Marker(lonlat);
	newMarker.setName(name);	
	newMarker.events.register('mouseover', newMarker, function () {addPopup('',lonlat,null,name)} );
	newMarker.events.register('mouseout', newMarker, function () {hidePopup()} );
	markersLayer.addMarker(newMarker);
	try{
		//the map might not have been rendered yet.
		olMap.setCenter(lonlat,12);
	}catch(err){
		//ignore
	}
}

/**
 * PopUp Code
 */
var popup,popupShadow;

function addPopup(cssName,lonlat,image,descriptionHTML) {
	if (cssName == '') {
    	cssName = 'toolTip';
   	}
    // the shadow of the popup
    popupShadow = new OpenLayers.Popup.AutoHeight(cssName,lonlat,null,null,150,false);
    popupShadow.setContentHTML(descriptionHTML);
    popupShadow.setBackgroundColor("#000000");
    popupShadow.setOpacity(0.4);
    popupShadow.offset(14,14);
    // the popup with content
    popup = new OpenLayers.Popup.AutoHeight(cssName,lonlat,null,null,150,false);
    popup.setContentHTML(descriptionHTML);
    popup.setBackgroundColor("#dee7f7");
    popup.setBorder("1px solid black");
    popup.offset(8,8);
    // need to add the shadow first so it is drawn beneath
    olMap.addPopup(popupShadow);
    olMap.addPopup(popup);
}    

function hidePopup() {
    popupShadow.hide();
    popup.hide();
}


/**
 * Add some markers to add to the map
 */
var terrapagesMarkersLayer = new OpenLayers.Layer.Markers();
terrapagesMarkersLayer.setName('Office Locations');
terrapagesMarkersLayer.setVisibility(true);
addMarkerToLayer(terrapagesMarkersLayer,138.59839734,-34.92415122,"TerraPages Adelaide");
addMarkerToLayer(terrapagesMarkersLayer,144.96310027,-37.81426487,"TerraPages Melbourne");
addMarkerToLayer(terrapagesMarkersLayer,151.1943528,-33.86439503,"TerraPages Sydney");

/**
 * Create a Markers layer to add the address helper points too.
 */
var addressHelperMarkersLayer = new OpenLayers.Layer.Markers();
addressHelperMarkersLayer.setName('Address Helper');
addressHelperMarkersLayer.setVisibility(true);

/**
 * All the AddressHelper code goes in here!
 */
var addressHelper = new AddressHelper();
addressHelper.setDisplay('INLINE');

addressHelper.setDelay(1.0);
addressHelper.setAlias(false);
addressHelper.setCoordinates(true);
addressHelper.setXMLResponse(false, '_blank');
addressHelper.setNumberAddressesReturned(10, 100);
addressHelper.setClearButton(true);
addressHelper.setStyle('http://terrapages.net/addresshelper/addresshelper/inline/css/addresshelper-main.css');
addressHelper.setFreeForm(false, 10, '<flatnumber>/<streetnumber> <streetname> <streettype>, <suburb>, <state>');
addressHelper.setShowAllAddresses(false);
//addressHelper.setStyle('javascript/OpenLayers-2.4/theme/default/style.css');
addressHelper.create();

function addAddressHelperMarker(){
	var lat = document.getElementById('AHlatitude').value;
	var lon = document.getElementById('AHlongitude').value;	
	var name = '';
	if (document.getElementById('AHflatnumber').value){
		name = name + document.getElementById('AHflatnumber').value + '/';
	}
	if (document.getElementById('AHstreetnumber').value){
		name = name + document.getElementById('AHstreetnumber').value + ' ';
	}
	if (document.getElementById('AHstreetname').value){
		name = name + document.getElementById('AHstreetname').value+ ' ';
	}
	if (document.getElementById('AHstreettype').value){
		name = name + document.getElementById('AHstreettype').value + ', ';
	}
	if (document.getElementById('AHsuburb').value){
		name = name + document.getElementById('AHsuburb').value + ' ';
	}
	if (document.getElementById('AHstate').value){
		name = name + document.getElementById('AHstate').value;
	}
	if (lon && lat) {
		addMarkerToLayer(addressHelperMarkersLayer, lon, lat, name);
	}
}

