/*----------------------------------------------------------------------------
Seaway Map - Text
version:   1.0
author:    Marc Lacasse, Scott Vinkle, RealDecoy Inc.
___________________________________________________________________________ */



/* =Lock information
___________________________________________________________________________ */

function showLockDetails(id)
{
	var _prefix = com.realdecoy.prefix;
	if( _prefix == null ) return false;

	var _div = document.getElementById( 'textContent' );
	if( !_div ) return false;

	var _i = 0;
	var _imax = sw_loc_locks.length;

	var _found = -1;

	for( ; _i < _imax; _i++ )
	{
		if( sw_loc_locks[_i].id == id )
			{ _found = _i; break; }
	}

	if( _found == -1 ) return false;
	else
	{
        var _lock = sw_loc_locks[_found];

		var _lat = _lock.lat[0] + (_lock.lat[1] / 60) + (_lock.lat[2] / 3600);
		var _lon = _lock.lon[0] + (_lock.lon[1] / 60) + (_lock.lon[2] / 3600);
		      _lon *= -1;	// To get it on our hemisphere

		com.realdecoy.map.setCenter( new GLatLng(_lat , _lon), 14 );
	}

	var _fn_onload = function( data, responseCode )
	{
            // To ensure against HTTP errors that result in null or bad data,
            // always check status code is equal to 200 before processing the data
            if( responseCode == 200 )
            {
            	if( data.length > 0 ) { _div.innerHTML = data; }
				else {}
            }
			else if( responseCode == -1 )
			{
				var _error = document.getElementById( "error" );
				if( com.realdecoy.lang == 'en' ) {
					if( !_error ) { alert( "Data request timed out. Please try again later." ); }
					else { _error.innerHTML = "<p>Data request timed out. Please try again later.</p>"; }
				} else {
					if( !_error ) { alert( "Le temps de r&eacute;ponse est &eacute;coul&eacute;. Veuillez essayer de nouveau." ); }
					else { _error.innerHTML = "<p>Le temps de r&eacute;ponse est &eacute;coul&eacute;. Veuillez essayer de nouveau.</p>"; }
				}
            }
            else
            {
				var _error = document.getElementById( "error" );
                if (com.realdecoy.lang == 'en') {
                    if( !_error ) { alert( "Request failed (file is inaccessible). Please try again later.." ); }
                    else { _error.innerHTML = "<p>Request failed (file is inaccessible). Please try again later.</p>"; }
                } else {
                    if( !_error ) { alert( "Votre demande a &eacute;chou&eacute; (fichier inaccessible). Veuillez essayer de nouveau." ); }
                    else { _error.innerHTML = "<p>Votre demande a &eacute;chou&eacute; (fichier inaccessible). Veuillez essayer de nouveau.</p>"; }
                }
            }

            com.realdecoy.clearPreloadPage();
	};

    if (com.realdecoy.lang == 'en') {
        var _url = _prefix + "/map/text/locks/en/" + _lock.content_path;
    } else {
        var _url = _prefix + "/map/text/locks/fr/" + _lock.content_path;
    }

    GDownloadUrl( _url, _fn_onload );
}


/* =Port information
___________________________________________________________________________ */

function showPortDetails(id)
{
	var _prefix = com.realdecoy.prefix;
	if( _prefix == null ) return false;

	var _div = document.getElementById( 'textContent' );
	if( !_div ) return false;


    var _i = 0;
	var _imax = sw_loc_ports.length;

	var _found = -1;

	for( ; _i < _imax; _i++ )
	{
		if( sw_loc_ports[_i].id == id )
			{ _found = _i; break; }
	}

	if( _found == -1 ) return false;
	else
	{
        var _port = sw_loc_ports[_found];

		var _lat = _port.lat[0] + (_port.lat[1] / 60) + (_port.lat[2] / 3600);
		var _lon = _port.lon[0] + (_port.lon[1] / 60) + (_port.lon[2] / 3600);
		      _lon *= -1;	// To get it on our hemisphere

		com.realdecoy.map.setCenter( new GLatLng(_lat , _lon), 11 );
	}

 	var _fn_onload = function( data, responseCode )
	{
            // To ensure against HTTP errors that result in null or bad data,
            // always check status code is equal to 200 before processing the data
            if( responseCode == 200 )
            {
            	if( data.length > 0 ) { _div.innerHTML = data; }
				else {}
            }
			else if( responseCode == -1 )
			{
				var _error = document.getElementById( "error" );
				if( com.realdecoy.lang == 'en' ) {
					if( !_error ) { alert( "Data request timed out. Please try again later." ); }
					else { _error.innerHTML = "<p>Data request timed out. Please try again later.</p>"; }
				} else {
					if( !_error ) { alert( "Le temps de r&eacute;ponse est &eacute;coul&eacute;. Veuillez essayer de nouveau." ); }
					else { _error.innerHTML = "<p>Le temps de r&eacute;ponse est &eacute;coul&eacute;. Veuillez essayer de nouveau.</p>"; }
				}
            }
            else
            {
				var _error = document.getElementById( "error" );
                if (com.realdecoy.lang == 'en') {
                    if( !_error ) { alert( "Request failed (file is inaccessible). Please try again later.." ); }
                    else { _error.innerHTML = "<p>Request failed (file is inaccessible). Please try again later.</p>"; }
                } else {
                    if( !_error ) { alert( "Votre demande a &eacute;chou&eacute; (fichier inaccessible). Veuillez essayer de nouveau." ); }
                    else { _error.innerHTML = "<p>Votre demande a &eacute;chou&eacute; (fichier inaccessible). Veuillez essayer de nouveau.</p>"; }
                }
            }

            com.realdecoy.clearPreloadPage();
	};

	var _url = _prefix + "/map/text/ports/" + ( com.realdecoy.lang == 'en' ? "en" : "fr" ) + "/" + id + ".html";

    GDownloadUrl( _url, _fn_onload );
}



/* =Vessel information
___________________________________________________________________________ */
function showAllShipDetails()
{
    showTab(getActiveTab(), 'boats');

	var _div =  document.getElementById('textContent');
	if( !_div ) return false;

    var _content =[];

    if (com.realdecoy.lang == 'en') {
   	  	_content.push( "<br /><input type=\"button\" name=\"showAllShips\" id=\"showAllShips\" value=\"Show all Vessels\" onClick=\"com.realdecoy.showAllShips();\" />" );
    } else {
        _content.push( "<br /><input type=\"button\" name=\"showAllShips\" id=\"showAllShips\" value=\"Afficher tous les navires\" onClick=\"com.realdecoy.showAllShips();\" />" );
    }
		_content.push ( "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">" );

		if( com.realdecoy.lang.match( /^en$/ ) ) { _content.push( "<tr><th>Show/Hide</th><th>Last Location</th><th>Next Location</th><th>Transit Status</th><th>&nbsp;</th></tr>" ); }
		else { _content.push( "<tr><th>Afficher / Cacher</th><th>Derni&egrave;re position</th><th>Prochaine position</th><th>&Eacute;tat du transit</th><th>&nbsp;</th></tr>" ); }

    var _fn_sort = function(a,b)
    {
      var _a = a.name;
      var _b = b.name;

      var _l = ( _a.length > _b.length ? _b.length : _a.length );

      _a = _a.substring( 0, _l );
      _b = _b.substring( 0, _l );

      if( _a.toLowerCase() > _b.toLowerCase() ) return 1;
      else if( _a.toLowerCase() < _b.toLowerCase() ) return -1;

      return 0;
    };

    //sw_loc_boats.sort( _fn_sort );

	var _i = 0;
	var _imax =  sw_loc_boats.length;

    for( ; _i < _imax; _i++ )
    {
        var _boat = sw_loc_boats[_i];

        var _oddRow = _i % 2; // Counter mod 2 to denote odd rows
		var _className = "";

		if (_oddRow==1) {
			_className = ' class="oddRow"';
		}

        _content.push( "<tr" + _className + "><td><input type=\"checkbox\" name=\"showVessel\" id=\"showVessel_" + _boat.id + "\" onClick=\"com.realdecoy.displayCheckedBoats();\" />&nbsp;" + _boat.name + "</td>" );

        if( com.realdecoy.lang.match( /^en$/ ) ) {  _content.push( "<td>" + _boat.last_e + "</td><td>" + _boat.next_e + "</td><td>" + _boat.status_e + "</td>" ); }
        else { _content.push( "<td>" + _boat.last_f + "</td><td>" + _boat.next_f + "</td><td>" + _boat.status_f + "</td>" ); }

        if (com.realdecoy.lang == 'en') {
            _content.push( "<td><input class=\"viewDetails\" type=\"button\" name=\"viewDetails\" id=\"viewDetails_" + _boat.id + "\" value=\"View Details\" onClick=\"showVesselDetails(" + _boat.id + "); return false;\" /></td></tr>" );
        } else {
            _content.push( "<td><input class=\"viewDetails\" type=\"button\" name=\"viewDetails\" id=\"viewDetails_" + _boat.id + "\" value=\"Voir d&eacute;tails\" onClick=\"showVesselDetails(" + _boat.id + "); return false;\" /></td></tr>" );
        }
    }

    _content.push( "</table>" );

	_div.innerHTML = _content.join( "" );
}

function hideAllShipDetails()
{
	if( com.realdecoy.ctx.showBoats )
	{
		var _div =  document.getElementById( 'textContent' );
		if( !_div ) return;

    	_div.innerHTML='';
   	}
}

function showVesselDetails(id)
{
	var _div =  document.getElementById('textContent');
	if( !_div ) return false;

	var _i = 0;
	var _imax = sw_loc_boats.length;

	var _found = -1;

	for( ; _i < _imax; _i++ )
	{
		if( sw_loc_boats[_i].id == id )
			{ _found = _i; break; }
	}

	if( _found == -1 ) return false;
	else
	{
        var _boat = sw_loc_boats[_found];
		var _content = [];

		var _lat = _boat.lat; //_boat.lat[0] + (_boat.lat[1] / 60) + (_boat.lat[2] / 3600);
		var _lon = _boat.lon; //_boat.lon[0] + (_boat.lon[1] / 60) + (_boat.lon[2] / 3600);
  			  //_lon *= -1;	// To get it on our hemisphere

		// Pan to the vessel position on the map
		com.realdecoy.map.setCenter( new GLatLng( _lat , _lon ), 12);

        _content.push( "<input type='checkbox' name='showVessel' id='showVessel_" + _boat.id + "' checked style='display: none;'/>" );

		if( com.realdecoy.lang.match( /^en$/ ) )
		{
		  _content.push( "<br /><input type=\"button\" name=\"viewAllVessels\" id=\"viewAllVessels\" value=\"View all Vessels\" onClick=\"showAllShipDetails();\" />" );
		  _content.push( "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">" );
		  _content.push( "<tr><td>Vessel Name:</td><td>" + _boat.name + "</td><td>Transit Status:</td><td>" +_boat.status_e + "</td></tr>" );
          _content.push( "<tr class=\"oddRow\"><td>Vessel No:</td><td>" + _boat.id + "</td><td>Last Location:</td><td>" + _boat.last_e + "</td></tr>" );
		  _content.push( "<tr><td>Fleet:</td><td>" + _boat.fleet + "</td><td>ATA:</td><td>" + _boat.ata + "</td></tr>" );
		  _content.push( "<tr class=\"oddRow\"><td>No of Vessel:</td><td>" + _boat.no_vessel + "</td><td>Country:</td><td>" + _boat.country_e + "</td></tr>" );
		  _content.push( "<tr><td>Width (Meters):</td><td>" + _boat.width + "</td><td>Next Location:</td><td>" + _boat.next_e + "</td></tr>" );
		  _content.push( "<tr class=\"oddRow\"><td>Length (Meters):</td><td>" + _boat.length + "</td><td>ETA:</td><td>" + _boat.eta + "</td></tr>" );
		  _content.push(  "</table>" );
		}
		else
		{
		  _content.push( "<br /><input type=\"button\" name=\"viewAllVessels\" id=\"viewAllVessels\" value=\"Voir tous les navires\" onClick=\"showAllShipDetails();\" />" );
		  _content.push( "<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" width=\"100%\">" );
		  _content.push( "<tr><td>Nom du navire:</td><td>" + _boat.name + "</td><td>&Eacute;tat du transit:</td><td>" +_boat.status_f + "</td></tr>" );
          _content.push( "<tr class=\"oddRow\"><td>Identification de navire:</td><td>" + _boat.id + "</td><td>Derni&egrave;re location:</td><td>" + _boat.last_f + "</td></tr>" );
		  _content.push( "<tr><td>Flotte:</td><td>" + _boat.fleet + "</td><td>HRA (heure r&eacute;elle d'arriv&eacute;e):</td><td>" + _boat.ata + "</td></tr>" );
		  _content.push( "<tr class=\"oddRow\"><td>Nombre de navires:</td><td>" + _boat.no_vessel + "</td><td>Pays:</td><td>" + _boat.country_f + "</td></tr>" );
		  _content.push( "<tr><td>Largeur en m&egrave;tres:</td><td>" + _boat.width + "</td><td>Prochaine location:</td><td>" + _boat.next_f + "</td></tr>" );
		  _content.push( "<tr class=\"oddRow\"><td>Longueur en m&egrave;tres:</td><td>" + _boat.length + "</td><td>HPA (heure pr&eacute;vue d'arriv&eacute;e):</td><td>" + _boat.eta + "</td></tr>" );
		  _content.push(  "</table>" );
		}

		_div.innerHTML = _content.join( "" );
    }

	com.realdecoy.clearPreloadPage();
}

