<?xml version="1.0" encoding="UTF-8" ?>

<Module>
  <ModulePrefs 
	title="__UP_user_location__ Advisories" 
	directory_title="Avalanche Advisory Reader"
	title_url="http://www.thesnowpit.com/tools/avy_gadget.html"
	description="A worldwide snow and avalanche advisory reader for English speaking countries.  These advisories also often include weather and snowpack discussions.  Best viewed in a large pane.  Suggestions for adaptation for non-English international advisories welcome.  Please send new links and comments to the author's email."
	author="Cora Shea"
	author_email="corashea+avyreadergadget@gmail.com"
	author_affiliation="Independent"
	author_location="USA"
	screenshot="http://www.thesnowpit.com/tools/images/google_screenshot.png"
	thumbnail="http://www.thesnowpit.com/tools/images/google_thumb.png"
	height="400" 
	scaling="false" 
	scrolling="true">
	<Require feature="setprefs" />
	<Require feature="tabs" />
  </ModulePrefs>
  <UserPref 
	name="selected_tab" 
	datatype="hidden" />
  <UserPref
	name="text_size"
	display_name="Text Size:"
	default_value="60%"
	datatype="enum" >
	<EnumValue value="50%" display_value="Tiny" />
	<EnumValue value="60%" display_value="Small" />
	<EnumValue value="80%" display_value="Regular" />
	<EnumValue value="100%" display_value="Bigger" />
	<EnumValue value="120%" display_value="Huge" />
  </UserPref>
  <UserPref 
	name="user_location" 
	display_name="Location:" 
	datatype="enum"
	default_value="California" >
  	<EnumValue value="Alaska" />
	<EnumValue value="California" />
	<EnumValue value="Canada" />
	<EnumValue value="Colorado" />
	<EnumValue value="Finland" />
	<EnumValue value="Idaho" />
	<EnumValue value="Montana" />
	<EnumValue value="Nevada" />
	<EnumValue value="New Hampshire" />
	<EnumValue value="New Zeland" />
	<EnumValue value="Oregon" />
	<EnumValue value="Scotland" />
	<EnumValue value="Utah" />
	<EnumValue value="Washington" />
	<EnumValue value="Wyoming" />
  </UserPref>
  <Content type="html">

  <![CDATA[ 

	<style> #content_div {margin: 3px; font-size: 70%; background-color: #90D9FF;} </style>
	
	<div id=content_div></div>

	<script type="text/javascript">

		var today = new Date();

      		var day = today.getDay();
		var day_names = new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday");
		
		var month = today.getMonth();
		var month_names = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec")
		var date = today.getDate();  

		_gel("content_div").innerHTML = "<b>Today is: </b>";
		_gel("content_div").innerHTML += day_names[day] + ", ";
		_gel("content_div").innerHTML += month_names[month] + " ";
		_gel("content_div").innerHTML += date;

	</script>

	<script type="text/javascript"> 

		var prefs = new _IG_Prefs();

		var advisory_urls = new Array();
		var tab_titles = new Array();

		var advisory_location = prefs.getString("user_location");

		// ----ALASKA----
		var alaska_links = new Array(
			"http://www.fs.fed.us/r10/chugach/glacier/advisory.html",
			"http://www.avalanche.org/~seaac/Pages1/AdvisorySAAC06_07.html"
		);
		var alaska_titles = new Array(
			"Chugach",
			"Juneau"
		);

		// ----CALIFORNIA----
		var california_links = new Array(
			"http://www.esavalanche.org/Advisories.php",
			"http://www.sierraavalanchecenter.org/advisory.php",
			"http://www.shastaavalanche.org/advisory.htm",
			"http://www.nps.gov/yose/planyourvisit/tm.htm"			
		);
		var california_titles = new Array(
			"ESAC",
			"Tahoe",
			"Shasta",
			"Yosemite"
		);

		// ----CANADA----
		var canada_links = new Array(
			"http://www.pc.gc.ca/apps/PSB/index_e.asp?oqAVA_PARK_ID=2",
			"http://www.pc.gc.ca/apps/PSB/index_e.asp?oqAVA_PARK_ID=1",
			"http://www.pc.gc.ca/apps/PSB/index_e.asp?oqAVA_PARK_ID=3",
			"http://www.pc.gc.ca/apps/PSB/index_e.asp?oqAVA_PARK_ID=4",
			"http://tprc.alberta.ca/parks/kananaskis/backcountryreport.asp",
			"http://www.whistlerblackcomb.com/weather/advisory/index.htm"
		);
		var canada_titles = new Array(
			"Banff/Yoho",
			"Jasper",
			"Glacier",
			"Waterton",
			"Kankanaskis",
			"Whistler"
		);

		// ----COLORADO----
		var colorado_links = new Array(
			"http://avalanche.state.co.us/Forecasts/Steamboat/",
			"http://avalanche.state.co.us/Forecasts/Front+Range/",
			"http://avalanche.state.co.us/Forecasts/Vail+Summit+Co/",
			"http://avalanche.state.co.us/Forecasts/Aspen/",
			"http://avalanche.state.co.us/Forecasts/Grand+Mesa/",
			"http://avalanche.state.co.us/Forecasts/Sawatch+Range/",
			"http://avalanche.state.co.us/Forecasts/Gunnison/",
			"http://avalanche.state.co.us/Forecasts/N+San+Juan/",
			"http://avalanche.state.co.us/Forecasts/S+San+Juan/",
			"http://avalanche.state.co.us/Forecasts/Sangre+De+Cristo/"
		);
		var colorado_titles = new Array(
			"Steamboat",
			"FR",
			"Vail",
			"Aspen",
			"Mesa",
			"Sawatch",
			"Gunnison",
			"NSJ",
			"SSJ",
			"SDC"
		);

		// ----FINLAND----
		var finland_links = new Array(
			"http://www.fmi.fi/weather/warning_2.html"
		);
		var finland_titles = new Array(
			"FMI"
		);

		// ----IDAHO----
		var idaho_links = new Array(
			"http://www.fs.fed.us/ipnf/visit/conditions/backcountry/bcupdate.html",
			"http://www.payetteavalanche.org/advisory.asp",
			"http://www.avalanche.org/~svavctr/adv_current.php"
		);
		var idaho_titles = new Array(
			"Panhandle",
			"Payette",
			"Sawtooth"
		);

		// ----MONTANA----
		var montana_links = new Array(
			"http://www.mtavalanche.com/current/",
			"http://www.glacieravalanche.org/currentadvisory.cfm",
			"http://missoulaavalanche.org/advisories/"
		);
		var montana_titles = new Array(
			"Gallatin",
			"Glacier",
			"Missoula"
		);

		// ----NEVADA----
		var nevada_links = new Array(
			"http://www.sierraavalanchecenter.org/advisory.html"
		);
		var nevada_titles = new Array(
			"Tahoe"
		);

		// ----NEW HAMPSHIRE----
		var new_hampshire_links = new Array(
			"http://www.tuckerman.org/avalanche/"
		);
		var new_hampshire_titles = new Array(
			"Tuckerman"
		);

		// ----NEW ZELAND----
		var new_zeland_links = new Array(
			"http://www.softrock.co.nz/mg/apmc.php",
			"http://www.avalanche.net.nz/index_aa.asp"
		);
		var new_zeland_titles = new Array(
			"Arthurs",
			"Overview"
		);

		// ----OREGON----
		var oregon_links = new Array(
			"http://www.nwac.us/products/SABOR",
			"http://www.nwac.us/products/SABSEA",
			"http://www.nwac.us/products/SABSAS"
		);
		var oregon_titles = new Array(
			"Summary",
			"Detailed",
			"Special"
		);

		// ----SCOTLAND----
		var scotland_links = new Array(
			"http://www.sais.gov.uk/page_creag%20meagaidh.asp",
			"http://www.sais.gov.uk/page_glencoe.asp",
			"http://www.sais.gov.uk/page_lochaber.asp",
			"http://www.sais.gov.uk/page_northern%20cairngorms.asp",
			"http://www.sais.gov.uk/page_southern%20cairngorms.asp"
		);
		var scotland_titles = new Array(
			"CreagMeagaidh",
			"Glencoe",
			"Lochaber",
			"NCairngorms",
			"SCairngorms"
		);

		// ----UTAH----
		var utah_links = new Array(
			"http://www.avalanche.org/~uac/newadvisory/advisoryUintas.php",
			"http://www.avalanche.org/%7Elsafc/bulletin.HTML",
			"http://www.avalanche.org/~uac/newadvisory/advisoryLogan.php",
			"http://www.avalanche.org/~uac/newadvisory/advisorySkyline.php",
			"http://www.avalanche.org/%7Euac/newadvisory/advisory.php"
		);
		var utah_titles = new Array(
			"Uinta",
			"Moab",
			"Logan",
			"Manti",
			"Wasach"
		);


		// ----WASHINGTON----
		var washington_links = new Array(
			"http://www.nwac.us/products/SABWA",
			"http://www.nwac.us/products/SABSEA",
			"http://www.nwac.us/products/SABSAS"
		);
		var washington_titles = new Array(
			"Summary",
			"Detailed",
			"Special"
		);

		// ----WYOMING----
		var wyoming_links = new Array(
			"http://www.jhavalanche.org/scripts/avalanche.php?action=bulletin",
			"http://www.jhavalanche.org/scripts/avalanche.php?action=forecast&area=teton",
			"http://www.jhavalanche.org/scripts/avalanche.php?action=forecast&area=tog",
			"http://www.jhavalanche.org/scripts/avalanche.php?action=forecast&area=grey"
		);
		var wyoming_titles = new Array(
			"Overview",
			"Teton",
			"Togwotee",
			"Greys"
		);

		var tab_div = new Array();
    		var tabs = new _IG_Tabs(__MODULE_ID__); 

		switch (advisory_location) {

			case "Alaska": advisory_urls = alaska_links; tab_titles = alaska_titles; break;
			case "California": advisory_urls = california_links; tab_titles = california_titles; break;
			case "Canada": advisory_urls = canada_links; tab_titles = canada_titles; break;
			case "Colorado": advisory_urls = colorado_links; tab_titles = colorado_titles; break;
			case "Finland": advisory_urls = finland_links; tab_titles = finland_titles; break;
			case "Idaho": advisory_urls = idaho_links; tab_titles = idaho_titles; break;
			case "Montana": advisory_urls = montana_links; tab_titles = montana_titles; break;
			case "Nevada": advisory_urls = nevada_links; tab_titles = nevada_titles; break;
			case "New Hampshire": advisory_urls = new_hampshire_links; tab_titles = new_hampshire_titles; break;
			case "New Zeland": advisory_urls = new_zeland_links; tab_titles = new_zeland_titles; break;
			case "Oregon": advisory_urls = oregon_links; tab_titles = oregon_titles; break;
			case "Scotland": advisory_urls = scotland_links; tab_titles = scotland_titles; break;
			case "Utah": advisory_urls = utah_links; tab_titles = utah_titles; break;
			case "Washington": advisory_urls = washington_links; tab_titles = washington_titles; break;
			case "Wyoming": advisory_urls = wyoming_links; tab_titles = wyoming_titles; break;
		}

		var stripped_text;

		function strip_html_plain (text) {

			stripped_text = text;

			stripped_text = strip_html_basic(stripped_text);
			stripped_text = stripped_text.replace(/&(lt|gt);/g, function (strMatch, p1){
 		 		return (p1 == "lt")? "<" : ">";
 			});
			//alert(stripped_text);
 			stripped_text = stripped_text.replace(/<\/?[^>]+(>|$)/g, "");
			return stripped_text;
		}

		function strip_html_basic (text, home_url) {
			
			stripped_text = text;
			stripped_text = stripped_text.replace(/<html([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<\/html>/gi, "");
			stripped_text = stripped_text.replace(/<!--([\s\S]*?)-->/gi, "");

			// Get rid of xml, Doctypes and other tags
			stripped_text = stripped_text.replace(/<\?xml([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<\\?\??xml[^>]>/gi, "");
			stripped_text = stripped_text.replace(/<\/?\w+:[^>]*>/gi, "");
			stripped_text = stripped_text.replace(/<!DOCTYPE([^>]*)>/gi, "");

			//alert("After html and comments" + stripped_text);

			stripped_text = stripped_text.replace(/<head([\s\S]*?)<\/head>/gi, "");
			stripped_text = stripped_text.replace(/<style([\s\S]*?)<\/style>/gi, "");
			stripped_text = stripped_text.replace(/<script([\s\S]*?)<\/script>/gi, "");
			stripped_text = stripped_text.replace(/<object([\s\S]*?)<\/object>/gi, "");
			stripped_text = stripped_text.replace(/<embed([\s\S]*?)<\/embed>/gi, "");

			//alert("After head and containers" + stripped_text);

			stripped_text = stripped_text.replace(/<meta([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<p([^>]*)>/gi, "<p>");
			stripped_text = stripped_text.replace(/<area([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<body([^>]*)>/gi, "<body>");
			stripped_text = stripped_text.replace(/<img([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<input([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<basefront([^>]*)>/gi, "");

			//alert("After meta and p and body" + stripped_text);


			stripped_text = stripped_text.replace(/<div([^>]*)>/gi, "<p>");
			stripped_text = stripped_text.replace(/<\/div([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<form([^>]*?>)/gi, "");
			stripped_text = stripped_text.replace(/<\/form([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<span([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<\/span([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<font([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<\/font([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<map([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<\/map([^>]*)>/gi, " ");

			//alert("After divs and spans and maps" + stripped_text);

			stripped_text = stripped_text.replace(/<table([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<td([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<tr([^>]*)>/gi, " ");
			stripped_text = stripped_text.replace(/<tbody([^>]*)>/gi, " ");

			stripped_text = stripped_text.replace(/<\/tr([^>]*)>/gi, "<p>");
			stripped_text = stripped_text.replace(/<\/td([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<\/table([^>]*)>/gi, "<p>");
			stripped_text = stripped_text.replace(/<\/tbody([^>]*)>/gi, "<p>");

			//alert("After tables" + stripped_text);

			//Replace newlines for easier debugging
			stripped_text = stripped_text.replace(/\n/gi, "");
			
			stripped_text = stripped_text.replace(/<a([^>]*)>/gi, "<a href='" + home_url + "' target='new'>");
			//stripped_text = stripped_text.replace(/<a([\s\S]*?)>low<\/a>/gi, "LOW");	
			//stripped_text = stripped_text.replace(/<a([\s\S]*?)>moderate<\/a>/gi, "MODERATE");
			//stripped_text = stripped_text.replace(/<a([\s\S]*?)>high<\/a>/gi, "HIGH");
			//stripped_text = stripped_text.replace(/<a([\s\S]*?)>considerable<\/a>/gi, "CONSIDERABLE");
			//stripped_text = stripped_text.replace(/<a([\s\S]*?)>extreme<\/a>/gi, "EXTREME");
			
			stripped_text = stripped_text.replace(/\n/gi, "");
			//alert(stripped_text);

			//stripped_text = stripped_text.replace(/<a([\s\S]*?)<\/a>/gi, "");

			stripped_text = stripped_text.replace(/<ul([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<\/ul>/gi, "");
			stripped_text = stripped_text.replace(/<ol([^>]*)>/gi, "");
			stripped_text = stripped_text.replace(/<\/ol>/gi, "");
			stripped_text = stripped_text.replace(/<li([^>]*)>/gi, "<li>");
			stripped_text = stripped_text.replace(/<li><\/li>/gi, "");
			stripped_text = stripped_text.replace(/<\/li>/gi, "<br");
			stripped_text = stripped_text.replace(/<li>/gi, "");

			//stripped_text = stripped_text.replace(/<li([\s\S]*?)<\/li>/gi, "");
			//stripped_text = stripped_text.replace(/<ul([\s\S]*?)<\/ul>/gi, "");
			//stripped_text = stripped_text.replace(/<ol([\s\S]*?)<\/ol>/gi, "");

			// Replace strings of linked blank paragraphs
			stripped_text = stripped_text.replace(/<p>((\s)*?)<p>/gi, "");
			stripped_text = stripped_text.replace(/<\/p>((\s)*?)<\/p>/gi, "");

			// Replace strings of linked line breaks
			stripped_text = stripped_text.replace(/<br>((\s)*?)<br>/gi, "");
			stripped_text = stripped_text.replace(/<\/br>((\s)*?)<\/br>/gi, "");

			stripped_text = stripped_text.replace(/<h[1-6]([^>]*)>/gi, "<p>");
			stripped_text = stripped_text.replace(/<\/h[1-6]([^>]*)>/gi, "<p>");

			//stripped_text = stripped_text.replace(/<([\w]+) class=([^ |>]*)([^>]*)/gi, "<$1$3");
			//stripped_text = stripped_text.replace(/<([\w]+) style="([^"]*)"([^>]*)/gi, "<$1$3");
			    
			return stripped_text;
		}

		var page_text = new Array();;

		function print_page (response_text, div, i) {

			page_text[i] = response_text;
			update_page(false, div, i);
		}


		function update_page(print_plain, div, i) {

			_gel(tab_div[i]).innerHTML = "<b>View: </b><br>";
			_gel(tab_div[i]).innerHTML += "<a href='" + advisory_urls[i] + "' target='new'>Original Advisory In New Window</a><br> ";
			_gel(tab_div[i]).innerHTML += " <a href='" + advisory_urls[i] + "'>Orignial Advisory Here (Use Refresh to Return)</a><br>";
			_gel(tab_div[i]).innerHTML += " <a href='javascript:void(0);' onclick='update_pages(true);'>Plain Text Wipe</a><br>   ";
			_gel(tab_div[i]).innerHTML += " <a href='javascript:void(0);' onclick='update_pages(false);'>Simple Formatted Text Wipe (Default)</a><br>";
				_gel(tab_div[i]).innerHTML += "(All links lead to original advisory)<br><br>";							

			if (print_plain) { _gel(div).innerHTML += strip_html_plain(page_text[i]); }
			else { _gel(div).innerHTML += strip_html_basic(page_text[i], advisory_urls[i]); }

		}

		function update_pages (print_plain) {
		
			for (var i = 0; i < tab_div.length; i++) {
				_gel(tab_div[i]).innerHTML = "<b>View: </b><br>";
				_gel(tab_div[i]).innerHTML += "<a href='" + advisory_urls[i] + "' target='new'>Original Advisory In New Window</a><br> ";
				_gel(tab_div[i]).innerHTML += " <a href='" + advisory_urls[i] + "'>Orignial Advisory Here (Use Refresh to Return)</a><br>";
				_gel(tab_div[i]).innerHTML += " <a href='javascript:void(0);' onclick='update_pages(true);'>Plain Text Wipe</a><br>   ";
				_gel(tab_div[i]).innerHTML += " <a href='javascript:void(0);' onclick='update_pages(false);'>Simple Formatted Text Wipe (Default)</a><br>";
				_gel(tab_div[i]).innerHTML += "(All links lead to original advisory)<br><br>";				

				if (print_plain) { _gel(tab_div[i]).innerHTML += strip_html_plain(page_text[i]); }
				else { _gel(tab_div[i]).innerHTML += strip_html_basic(page_text[i], advisory_urls[i]); }
			}
		}


		for (var i = 0; i < advisory_urls.length; i++) {

			tab_div[i] = tabs.addTab(tab_titles[i]);    

			_gel(tab_div[i]).style.margin ="3px";
			_gel(tab_div[i]).style.backgroundColor ="#EEEEF0";
			_gel(tab_div[i]).style.fontSize = prefs.getString("text_size");
			_IG_FetchContent(advisory_urls[i], _IG_Callback(print_page, tab_div[i], i), 10);

				
		}
  		
  	</script>



  ]]> 
  </Content>
</Module>

