function getElementNameFromArray(index) {
   return ELEMENT_NAMES_ARRAY[index][WEATHER_ELEMENT_ARRAY_ELEMENT_NAME_INDEX];
}

function getElementTimePeriodType(index) {
   return ELEMENT_NAMES_ARRAY[index][WEATHER_ELEMENT_ARRAY_ELEMENT_TIMEPERIOD_TYPE];
}

function getElementPeriods(index) {
   return ELEMENT_NAMES_ARRAY[index][WEATHER_ELEMENT_ARRAY_ELEMENT_PERIOD];
}

function isAWeatherElementWithOneTimeslotPerPeriod(elementName) {
   for(var i = 0; i < ELEMENTS_WITH_ONE_TIMESLOT_PER_PERIOD.length; i++) {
      if(elementName == ELEMENTS_WITH_ONE_TIMESLOT_PER_PERIOD[i]) return true;
   }
   return false;
}

function getIndexOfWeatherElement(elementname) {
   for(var i = 0; i < ELEMENT_NAMES_ARRAY.length; i++) {
      if(ELEMENT_NAMES_ARRAY[i][WEATHER_ELEMENT_ARRAY_ELEMENT_NAME_INDEX] == elementname)
         return i;
   }
   return -1;
}

var ELEMENTS_WITH_ONE_TIMESLOT_PER_PERIOD = new Array();
if (( typeof(ELEMENT_NAME_MAXTMINT) == 'string' ) || (typeof(ELEMENT_NAME_DAILY_PRECIP) == 'string' )) {
   if (!ELEMENT_NAME_MAXTMINT) {
      ELEMENTS_WITH_ONE_TIMESLOT_PER_PERIOD.push(ELEMENT_NAME_MAXTMINT);
   }
   if (!ELEMENT_NAME_DAILY_PRECIP) {
      ELEMENTS_WITH_ONE_TIMESLOT_PER_PERIOD.push(ELEMENT_NAME_DAILY_PRECIP);
   }
}

var ELEMENT_NAMES = new Array();
var NUMBER_OF_ELEMENTS = ELEMENT_NAMES_ARRAY.length;

//push all the elements names (e.g MaxTMinT,T,Precip etc) into ELEMENT_NAMES array.
for(var i = 0; i < NUMBER_OF_ELEMENTS; i++) {
   ELEMENT_NAMES.push(ELEMENT_NAMES_ARRAY[i][WEATHER_ELEMENT_ARRAY_ELEMENT_NAME_INDEX]);
}

var LOOP_FORECAST_ELEMENTS = new Array(); // order of elements in loop drop down
var LOOP_FORECAST_ELEMENTS_MAPPING = new Array(); 
var LOOP_PERIOD_MAPPING = new Array(); // element drop down to loop period type mapping

//read all the element name from the array
for(var i = 0; i < ELEMENT_NAMES_ARRAY.length; i++) {
   //get each element name e.g element_gridname = MaxTMinT
   element_gridname = ELEMENT_NAMES_ARRAY[i][WEATHER_ELEMENT_ARRAY_ELEMENT_NAME_INDEX];
   if(( typeof(ELEMENT_NAME_MAXTMINT) == 'string' ) && element_gridname == ELEMENT_NAME_MAXTMINT) {
      LOOP_FORECAST_ELEMENTS.push(MAXTMINT_LOOP_TEXT_DAY);
      LOOP_FORECAST_ELEMENTS_MAPPING.push(ELEMENT_NAME_MAXT);
      LOOP_PERIOD_MAPPING.push(LOOP_PERIOD_DAYS);
      LOOP_FORECAST_ELEMENTS.push(MAXTMINT_LOOP_TEXT_NIGHT);
      LOOP_FORECAST_ELEMENTS_MAPPING.push(ELEMENT_NAME_MINT);      
      LOOP_PERIOD_MAPPING.push(LOOP_PERIOD_NIGHTS);
   }
   else{
      //If element name T then LOOP_FORECAST_ELEMENTS = Tempperature
      LOOP_FORECAST_ELEMENTS.push(ELEMENT_NAMES_ARRAY[i][WEATHER_ELEMENT_ARRAY_ELEMENT_LOOP_TEXT]);
      //If element name T then LOOP_FORECAST_ELEMENTS_MAPPING = T
      LOOP_FORECAST_ELEMENTS_MAPPING.push(ELEMENT_NAMES_ARRAY[i][WEATHER_ELEMENT_ARRAY_ELEMENT_NAME_INDEX]);      
      //If element name T then LOOP_PERIOD_MAPPING = 3
      LOOP_PERIOD_MAPPING.push(ELEMENT_NAMES_ARRAY[i][WEATHER_ELEMENT_ARARY_ELEMENT_LOOP_PERIOD]);      
   }
}

var CURRENT_PERIOD = 1; // init
// var CURRENT_ELEMENT = ELEMENT_NAME_MAXTMINT;
if( typeof(ELEMENT_NAME_MAXTMINT) == 'string' ) { var CURRENT_ELEMENT = ELEMENT_NAME_MAXTMINT; } // Need to change anyway
var CURRENT_TIMESLOT = 1;
var CURRENT_PERIOD_ELEMENT_TIMESLOT = "" + DOM_ID_PREFIX + CURRENT_PERIOD + CURRENT_ELEMENT + CURRENT_TIMESLOT; /*"Period1MaxTMinT1";*/
var PREVIOUS_PERIOD = 1; // init
// var PREVIOUS_ELEMENT = ELEMENT_NAME_MAXTMINT;
if( typeof(ELEMENT_NAME_MAXTMINT) == 'string' ) { var PREVIOUS_ELEMENT = ELEMENT_NAME_MAXTMINT; } // Need to change anyway
var PREVIOUS_TIMESLOT = 1;
var PREVIOUS_PERIOD_ELEMENT_TIMESLOT = "" + DOM_ID_PREFIX + CURRENT_PERIOD + CURRENT_ELEMENT + CURRENT_TIMESLOT;

var marine_elmnts = new Array(
										'SigWaveHgt',
										'WindMag'
										);
var fire_elmnts = new Array(
									'WindMagKmh',
									'WindMagKmh1500mAMSL',
									'MixHgt',
									'DailyPrecip75Pct',
									'LAL',
									'CHaines',
									'FFDI',
									'MaxFFDI',
									'Hrs25FFDI',
									'Hrs38FFDI',
									'Hrs50FFDI',
									'Hrs100FFDI',
									'GFDI',
									'MaxGFDI',
									'Hrs50GFDI',
									'Hrs100GFDI',
									'Hrs150GFDI',
									'DF',
									'Curing',
									'GrassFuelLoad'
									);


