var GetWeatherHazards3 = function (WeatherParameters) { var ZoneId = WeatherParameters.ZoneId; var HazardUrls = []; var HazardCounter = 0; WeatherParameters.WeatherHazardConditions = { ZoneId: WeatherParameters.ZoneId, Hazards: [], }; var Url = 'https://alerts.weather.gov/cap/wwaatmget.php?x=' + ZoneId + '&y=0'; // Load the xml file using ajax $.ajaxCORS({ type: 'GET', url: Url, dataType: 'text', crossDomain: true, cache: false, success: function (text) { // IE doesn't support XML tags with colons. text = text.replaceAll('<cap:', '<cap_'); text = text.replaceAll('</cap:', '</cap_'); var $xml = $(text); //console.log(xml); $xml.find('entry').each(function () { var entry = $(this); // Skip non-alerts. var cap_msgType = entry.find('cap_msgType'); if (cap_msgType.text() !== 'Alert') { return true; } var link = entry.find('link'); var Url = link.attr('href'); HazardUrls.push(Url); }); if (HazardUrls.length === 0) { PopulateHazardConditions(WeatherParameters); console.log(WeatherParameters.WeatherHazardConditions); return; } $(HazardUrls).each(function () { var Url = this.toString(); $.ajaxCORS({ type: 'GET', url: Url, dataType: 'xml', crossDomain: true, cache: true, success: function (xml) { var $xml = $(xml); console.log(xml); var description = $xml.find('description'); WeatherParameters.WeatherHazardConditions.Hazards.push(description.text()); HazardCounter++; if (HazardCounter === HazardUrls.length) { PopulateHazardConditions(WeatherParameters); console.log(WeatherParameters.WeatherHazardConditions); } }, error: function () { console.error('GetWeatherHazards3 failed for Url: ' + Url); WeatherParameters.Progress.Hazards = LoadStatuses.Failed; }, }); }); }, error: function (xhr, error, errorThrown) { console.error('GetWeatherHazards3 failed: ' + errorThrown); WeatherParameters.Progress.Hazards = LoadStatuses.Failed; }, }); }; var canvasProgress_mousemove = function (e) { canvasProgress.css('cursor', ''); var RatioX = canvasProgress.width() / 640; var RatioY = canvasProgress.height() / 480; if (e.offsetX >= (70 * RatioX) && e.offsetX <= (565 * RatioX)) { //if (e.offsetY >= (105 * RatioY) && e.offsetY <= (350 * RatioY)) if (e.offsetY >= (100 * RatioY) && e.offsetY <= (385 * RatioY)) { // Show hand cursor. canvasProgress.css('cursor', 'pointer'); } } }; var PopulateHazardConditions = function (WeatherParameters) { if (WeatherParameters === null || (_DontLoadGifs && WeatherParameters.Progress.Hazards !== LoadStatuses.Loaded)) { return; } var WeatherHazardConditions = WeatherParameters.WeatherHazardConditions; var ZoneId = WeatherHazardConditions.ZoneId; var Text; var Line; var SkipLine; var DontLoadGifs = _DontLoadGifs; divHazards.empty(); $(WeatherHazardConditions.Hazards).each(function () { //Text = this.replaceAll("\n", "<br/>"); //divHazards.html(divHazards.html() + "<br/><br/>" + Text); Text = this.toString(); SkipLine = false; Text = Text.replaceAll('\n', ' '); //Text = Text.replaceAll("*** ", ""); //$(Text.split("\n")).each(function () $(Text.split(' ')).each(function () { Line = this.toString(); Line = Line.toUpperCase(); if (Line.startsWith('&&')) { return false; } else if (Line.startsWith('$$')) { return false; } if (SkipLine) { if (Line === '') { SkipLine = false; return true; } return true; } if (Line.startsWith(ZoneId)) { SkipLine = true; return true; } else if (Line.indexOf('>') !== -1) { SkipLine = true; return true; } else if (Line.indexOf('LAT...LON ') !== -1) { SkipLine = true; return true; } //divHazards.html(divHazards.html() + "<br/>" + Line); if (Line.indexOf('.') === 0 || Line.indexOf('*') === 0) { divHazards.html(divHazards.html() + '<br/><br/>'); if (Line.indexOf('.') === 0 && Line.indexOf('...') !== 0) { Line = Line.substr(1); } } divHazards.html(divHazards.html() + Line + ' '); }); divHazards.html(divHazards.html() + '<br/><br/>'); }); var DrawHazards = function () { // Draw canvas var canvas = canvasHazards[0]; var context = canvas.getContext('2d'); var BackGroundImage = new Image(); BackGroundImage.onload = function () { context.drawImage(BackGroundImage, 0, 0); if (DontLoadGifs) { UpdateHazards(); } if (WeatherHazardConditions.Hazards.length > 0) { WeatherParameters.Progress.Hazards = LoadStatuses.Loaded; } else { WeatherParameters.Progress.Hazards = LoadStatuses.NoData; } UpdateWeatherCanvas(WeatherParameters, canvasHazards); }; BackGroundImage.src = 'images/BackGround7.png'; }; var HazardsText = divHazards.html(); HazardsText = HazardsText.replaceAll('<br>', '\n'); HazardsText = HazardsText.replaceAll('<br/>', '\n'); HazardsText = HazardsText.replaceAll('<br />', '\n'); HazardsText = HazardsText.replaceAll('<br></br>', '\n'); WeatherHazardConditions.HazardsText = HazardsText; WeatherHazardConditions.HazardsTextC = ConvertConditionsToMetric(HazardsText); if (_Units === Units.Metric) { HazardsText = WeatherHazardConditions.HazardsTextC; } var HazardsWrapped = HazardsText.wordWrap(32); var cnvHazardsScroll; var ShowHazardsScroll = function () { var cnvHazardsScrollId; var context; cnvHazardsScrollId = 'cnvHazardsScroll'; var HazardsWrappedLines = HazardsWrapped.split('\n'); var MaxHazardsWrappedLines = 365; if (_OperatingSystem === OperatingSystems.Andriod) { MaxHazardsWrappedLines = 92; } if (HazardsWrappedLines.length > MaxHazardsWrappedLines) { HazardsWrappedLines = HazardsWrappedLines.splice(0, MaxHazardsWrappedLines - 1); } var height = 0 + (HazardsWrappedLines.length * 45); if (DontLoadGifs === false) { // Clear the current image. divHazardsScroll.empty(); divHazardsScroll.html('<canvas id=\'' + cnvHazardsScrollId + '\' />'); cnvHazardsScroll = $('#' + cnvHazardsScrollId); cnvHazardsScroll.attr('width', '640'); // For Chrome. cnvHazardsScroll.attr('height', height); // For Chrome. } cnvHazardsScroll = $('#' + cnvHazardsScrollId); context = cnvHazardsScroll[0].getContext('2d'); DrawBox(context, 'rgb(112, 35, 35)', 0, 0, 640, height); //var y = 0; var y = 45; $(HazardsWrappedLines).each(function () { var HazardLine = this.toString(); DrawText(context, 'Star4000', '24pt', '#FFFFFF', 80, y, HazardLine, 1); y += 45; }); DrawHazards(); }; ShowHazardsScroll(); }; var UpdateHazards = function (Offset) { var canvas = canvasHazards[0]; var context = canvas.getContext('2d'); var cnvHazardsScroll = $('#cnvHazardsScroll'); switch (Offset) { case undefined: break; case 0: _UpdateHazardsY = 0; break; case Infinity: _UpdateHazardsY = cnvHazardsScroll.height(); break; default: _UpdateHazardsY += (385 * Offset); if (_UpdateHazardsY > cnvHazardsScroll.height()) { _UpdateHazardsY = cnvHazardsScroll.height(); } else if (_UpdateHazardsY < 0) { _UpdateHazardsY = 0; } break; } DrawBox(context, 'rgb(112, 35,35)', 0, 0, 640, 385); context.drawImage(cnvHazardsScroll[0], 0, _UpdateHazardsY, 640, 385, 0, 0, 640, 385); };