$(document).ready(function(){

  var isActive = false;
  var activeStorms = new Array();
  var numActive = 0;
  var date = new Date();
  var year = date.getFullYear();

  $.ajax({
	type: "GET",
	url: "/static/weather_common/hurricane/hurricanedata.txt",
	dataType: "text",
	success: function(text) {
		var lines = text.split("\n");
		var i = 0;
		for (i=0; i<lines.length; i++) {
			var storm = lines[i].split("|");
			if (storm.length > 1) {
        storm[2] = jQuery.trim(storm[2]);
				if (storm[2] == "Active") {
					if ((zone == "al" && storm[0] == "Atlantic") || (zone == "ep" && storm[0] == "East Pacific")) {
						activeStorms[numActive] = storm[3].toLowerCase();
						numActive++;
						isActive = true;
					}
				}
			}
		}
    if (!isActive) {
      var errorText = "There are no active storms in ";

      if (zone == "al") {
        errorText = errorText + "the Atlantic Basin ";
      }
      else if (zone == "ep") {
        errorText = errorText + "the East Pacific Basin ";
      }

      errorText = errorText + "at this time.";

      $("#noStorm").html(errorText);
      $("#noStorm").show();
    }
    else {
      loopHurricaneData();
    }
    

	}
  });


  function loopHurricaneData() {
    var i = 0;
    for (i=0; i<numActive; i++) {
    // Get and display hurricane data
      var fileName = getFileName(activeStorms[i]);

      displayHurricaneData(i + 1, fileName, activeStorms[i]);

    }
  }

  function displayHurricaneData(divNum, fileName, stormName) {
	    $.ajax({
		  type: "GET",
  		url: "/static/weather_common/hurricane/" + fileName,
	  	dataType: "xml",
		  success: function(xml) {
	
  		  // Storm info
  	  	var name = $(xml).find('tropicalCyclone').find('tropical_name').text();
	  	  var basin = $(xml).find('tropicalCyclone').find('tropical_basin').text();

		    var position_lat = new Array();
    		var position_lon = new Array();
		    var wind = new Array();
    		var wind_unit = new Array();
		    var gusts = new Array();
    		var gusts_unit = new Array();
		    var movement_dir = new Array();
    		var movement_speed = new Array();
		    var movement_unit = new Array();
    		var status = new Array();

    		var max_i = 0;
		    var count_i = 0;

    		$(xml).find('attributeSummary').each(function (i) {
		      position_lat[count_i] = $(this).find('foundation_latitude').text();
    			position_lon[count_i] = $(this).find('foundation_longitude').text();
		    	wind[count_i] = $(this).find('tropical_maxSustainedWindSpeed').text();
    			wind_unit[count_i] = $(this).find('tropical_maxSustainedWindSpeed').attr('unit');
		    	gusts[count_i] = $(this).find('tropical_maxWindGustSpeed').text();
    			gusts_unit[count_i] = $(this).find('tropical_maxWindGustSpeed').attr('unit');
		    	movement_dir[count_i] = $(this).find('foundation_direction').text();
    			movement_speed[count_i] = $(this).find('foundation_speed').text();
		    	movement_unit[count_i] = $(this).find('foundation_speed').attr('unit');
    			status[count_i] = $(this).find('tropical_classificationType').text();
		    	max_i = count_i;
    			count_i = count_i + 1;
		    });

    		var movement_dir_text = translateDirection(movement_dir[max_i]);

		    var nameText = status[max_i] + ' ' + name;
    		var locText = 'Location: ' + position_lat[max_i] + ' lat ' + position_lon[max_i] + ' lon';
        
		    var windText = 'Winds sustained at ' + wind[max_i] + wind_unit[max_i];
        if (typeof(gusts_unit[max_i])!='undefined') {
          windText = windText + ', gusting up to ' + gusts[max_i] + gusts_unit[max_i];
        }

    		var movText = 'Movement: ' + movement_dir_text + ' at ' + movement_speed[max_i] + movement_unit[max_i];

        var imgBase = getImageBase(name);
        var satImgBase = getSatImageBase(name);

		    $("#storm" + divNum + " .stormData .stormName").html(nameText);
    		$("#storm" + divNum + " .stormData .stormLoc").html(locText);
		    $("#storm" + divNum + " .stormData .stormWind").html(windText);
    		$("#storm" + divNum + " .stormData .stormMov").html(movText);
		    $("#storm" + divNum + " .images .hurrImg .hurrImg1").attr('href',imgBase + '_1.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg1Sm").attr('alt','N/A');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg1Sm").attr('src',imgBase + '_1_120x90.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg2").attr('href',imgBase + '_2.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg2Sm").attr('alt','N/A');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg2Sm").attr('src',imgBase + '_2_120x90.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg3").attr('href',imgBase + '_7.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg3Sm").attr('alt','N/A');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg3Sm").attr('src',imgBase + '_7_120x90.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg4").attr('href',satImgBase + '1.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg4Sm").attr('alt','N/A');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg4Sm").attr('src',satImgBase + '1.png');
		    $("#storm" + divNum + " .images .hurrImg .hurrImg4Sm").attr('width','120');

        
		    $("#storm" + divNum).show();
 
      }
	  });
  }

});

function translateDirection(direction) {
	var movement_dir_text = '';
	if ((direction >= 338) || (direction <= 22)){
		movement_dir_text = 'N';
	}
	else if ((direction > 22) && (direction < 68)){
		movement_dir_text = 'NE';
	}
	else if ((direction >= 68) && (direction <= 115)){
		movement_dir_text = 'E';
	}
	else if ((direction > 115) && (direction < 158)){
		movement_dir_text = 'SE';
	}
	else if ((direction >= 158) && (direction <= 202)){
		movement_dir_text = 'S';
	}
	else if ((direction > 202) && (direction < 248)){
		movement_dir_text = 'SW';
	}
	else if ((direction >= 248) && (direction <= 292)){
		movement_dir_text = 'W';
	}
	else if ((direction > 292) && (direction < 338)){
		movement_dir_text = 'NW';
	}
	else {
		movement_dir_text = '??';
	}
	return movement_dir_text;
}

function getFileName(inputFileName) {

  var filePiece = inputFileName.split(".");
  var fileName = filePiece[0]; 

  fileName = fileName + '_scrubbed.xml';

  return fileName;
}

function getImageBase(stormName){
  var imgFileName = media_domain + '/static/weather_common/hurricane/u' + lang + 'h';

  if (zone == "al") {
    imgFileName = imgFileName + 'a';
  }
  else if (zone == "ep") {
    imgFileName = imgFileName + 'p';
  }

  imgFileName = imgFileName + stormName.substr(0,1).toLowerCase();

  return imgFileName;
}

function getSatImageBase(stormName){
  var imgFileName = media_domain + '/static/weather_common/hurricane/us' + lang + 'h';

  if (zone == "al") {
    imgFileName = imgFileName + 'a';
  }
  else if (zone == "ep") {
    imgFileName = imgFileName + 'p';
  }

  imgFileName = imgFileName + stormName.substr(0,1).toLowerCase();

  return imgFileName;
}
