  /*
   *   JavaScript Code
   *
   *****************************/
   
   
   var googleMap;
   var googleDir;
   var listCount = 0;
   
   function initialize( )
   {
       
           /*
            *
            * DETERMINE BROWSER COMPATIBILITY
            *
            */
           
           if ( GBrowserIsCompatible( ) )
	       {
                   
                   /*
                    *
                    * CREATE MAP & DIRECTIONS OBJECT
                    *
                    */
                   
                   googleMap                                        = new GMap2( document.getElementById( 'map' ) );
                   googleDir                                        = new GDirections( googleMap, document.getElementById( 'route' ) );
                   
                   /*
                    *
                    * CHANGE MAP OPTIONS
                    *
                    */
                   
                   googleMap.addControl                             ( new GLargeMapControl( ) );
                   
                   /*
                    *
                    * SET CENTER OF THE MAP
                    *
                    */
                   
                   googleMap.setCenter                              ( new GLatLng( 52.195715, 5.555576 ), 7 );
                   
                   /*
                    *
                    * CREATE MARKER
                    *
                    */
                   
                   GDownloadUrl( 'ajax/locations', function( GData ) {
                           
                           var oXML										= GXml.parse( GData );
                           var aMarkers									= oXML.documentElement.getElementsByTagName( 'marker' );
                           var myMarkers								= [];
                           
                           for ( var i = 0; i < aMarkers.length; i++ ) {
                                   
                                   var sName					= aMarkers[ i ].getAttribute( 'name' );
                                   var sAddress					= aMarkers[ i ].getAttribute( 'address' );
                                   var fLatitude				= aMarkers[ i ].getAttribute( 'latitude' );
                                   var fLongitude				= aMarkers[ i ].getAttribute( 'longitude' );
                                   
								   oLatLng						= new GLatLng( parseFloat( fLatitude ), parseFloat( fLongitude ) );
								   myMarkers[ i ]				= new GMarker( oLatLng );
								   myMarkers[ i ][ 'name' ]		= sName;
								   myMarkers[ i ][ 'html' ]		= '<b>' + sName + '</b><br />' + sAddress;
								   myMarkers[ i ][ 'count' ]	= i;
								   myMarkers[ i ][ 'total' ]	= aMarkers.length;
								   
								   googleMap.addOverlay( myMarkers[ i ] );
								   createInfoWindow( myMarkers[ i ] );
								   addToSideBar( myMarkers[ i ] );
								   
                           }
                           
                   } );
                   
                   /*
                    *
                    * LISTEN FOR ERRORS
                    *
                    */
                   
                   GEvent.addListener( googleDir, 'error', function( ) {
                           
						   if ( googleDir.getStatus( ).code == G_GEO_UNKNOWN_ADDRESS )
						           alert( 'Er kon corresponderende locatie gevonden worden voor het door u opgegeven adres. Dit kan komen doordat het address vrij nieuw is of incorrect geschreven is.' );
								   
						   else if ( googleDir.getStatus( ).code == G_GEO_SERVER_ERROR )
						           alert( 'De geocoding aanvraag kon niet succesvol worden uitgevoerd, hoewel de reden hiervoor niet bekend is.' );
								   
						   else if ( googleDir.getStatus( ).code == G_GEO_MISSING_QUERY )
						           alert( 'Er ontbreken parameters bij de routeaanvraag. De oorzaak kan zijn dat er geen adres is opgegeven.' );
								   
						   else if ( googleDir.getStatus( ).code == G_GEO_BAD_KEY )
						           alert( 'De GoogleMaps API sleutel die meegegeven is was incorrect of correspondeert niet met dit domein.' );
								   
						   else if ( googleDir.getStatus( ).code == G_GEO_BAD_REQUEST )
						           alert( 'De routeaanvrag kon helaas niet worden verwerkt.' );
								   
						   else
						           alert( 'Een onbekende fout heeft zich voorgedaan.' );
				   
                   } );
                   
           }
           
   }
   
   /*
    *
    * Some dirty code for binding links with markers
    *
    */
   function createElem(opt_className, opt_html, opt_tagName) {
           
		   var tag = opt_tagName||"div";
		   var elem = document.createElement(tag);
		   
		   if (opt_html) elem.innerHTML = opt_html;
		   if (opt_className) elem.className = opt_className;
		   return elem;
		   
   }
   
   function createInfoWindow( aPoint ) {
           
		   var iwNode = createElem( "info-window" );
		   iwNode.appendChild( createElem( "iw-cell-1", aPoint.html ) );
		   
		   aPoint.bindInfoWindow( iwNode, { maxWidth: 300 } );
           
   }
   
   function addToSideBar( point ) {
           
           var newElement = document.createElement( 'a' );
           newElement.href = '#';
           newElement.style.display = 'block';
           newElement.innerHTML = point.name;
           newElement.onclick = function( ) { GEvent.trigger( point, 'click' ); return false };
           
           perList = Math.ceil( point.total / 3 );
		   if ( point.count % perList == 0 ) {
                   
				   listCount++;
				   
           }
           
           var sideBar = document.getElementById( 'sidebar_' + listCount );
           sideBar.appendChild( newElement );
           GEvent.addListener( point, 'click', function( ) { newElement.focus( ); return false } );
		   
   }
