main
{
	pointer weatherTenDayStart
	{
		go_start;
		skip_to_text("new mpdFObj", true);
		skip_to_text(");", true);
	};

	pointer weatherTenDayEnd
	{
		skip_to_text("graphTrgs", true);
	};

	pointer weatherStart
	{
		go_start;
		skip_to_text("new mpdHMObj", true);
		skip_to_text(");", true);
	};

	pointer weatherEnd
	{
		skip_to_text("flashParams", true);
	};

	map skyMap
	{
		key_value("1", "13");
		key_value("2", "13");
		key_value("3", "13");
		key_value("4", "13");
		key_value("5", "9");
		key_value("6", "9");
		key_value("7", "9");
		key_value("8", "9");
		key_value("9", "7");
		key_value("10", "9");
		key_value("11", "7");
		key_value("12", "7");
		key_value("13", "10");
		key_value("14", "10");
		key_value("15", "11");
		key_value("16", "11");
		key_value("17", "13");
		key_value("18", "12");
		key_value("19", "6");
		key_value("20", "6");
		key_value("21", "6");
		key_value("22", "6");
		key_value("23", "6");
		key_value("24", "6");
		key_value("25", "6");
		key_value("26", "5");
		key_value("27", "20");
		key_value("28", "4");
		key_value("29", "18");
		key_value("30", "3");
		key_value("31", "17");
		key_value("32", "2");
		key_value("33", "18");
		key_value("34", "6");
		key_value("35", "13");
		key_value("36", "1");
		key_value("37", "15");
		key_value("38", "15");
		key_value("39", "14"); 
		key_value("40", "8");
		key_value("41", "16");
		key_value("42", "11");
		key_value("43", "11");
		key_value("44", "0");
		key_value("45", "22");
		key_value("46", "30");
		key_value("47", "28");
		key_value("48", "14");
	};

	string DELIMITER = "', ";

// downloading and parsing 10 days forecast
	{
		open_url("http://www.weather.com/weather/mpdwcr/tenday?locid="
			+ CityCode + "&channel=dailytraveler&datapoint=htempdp&adprodname=lap_travel_daily_main", "GET");

		skip_to_text("new mpdHeadObj(", true);
		skip_chars(DELIMITER);

	// temperature units
		begin_var;
		skip_to_chars("'");
		string tmprUnits = end_var;

	// wind speed units
		skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
		begin_var;
		skip_to_chars("'");
		string windSpeedUnits = end_var;

		select_area(weatherTenDayStart, weatherTenDayEnd);

		string sky = ".";

		while (sky)
		{
			sky = "";

		// day of month
			skip_to_text("new Date(", true);
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string dayOfMonth = end_var;

		// temperature high
			skip_to_text(")", true);
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string tmprHi = end_var;

		// temperature low
			skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string tmprLo = end_var;

		// sky
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			sky = end_var;

		// wind speed
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string windSpeed = end_var;

		// wind direction
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string windDirection = end_var;

		// humidity
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string humidity = end_var;

			if (sky)
			{
				sky = skyMap[sky];
    
				if (!sky)
					sky = "0";

				add_day;
			}
		}
	}

// downloading and parsing detailed 3 days forecast
	string dayIndex;

	while (dayIndex $ "...")
	{
		open_url("http://www.weather.com/weather/mpdwcr/hourbyhour?locid="
			+ CityCode + "&adprodname=lap_travel_daily_main&channel=dailytraveler&begHour=8&begDay="
			+ get_day(dayIndex), "GET");

		skip_to_text("new mpdHeadObj(", true);
		skip_chars(DELIMITER);

	// temperature units
		begin_var;
		skip_to_chars("'");
		string tmprUnits = end_var;

		select_area(weatherStart, weatherEnd);

		string sky = ".";

		while (sky)
		{
			sky = "";

		// day of month
			skip_to_text("new Date(", true);
			skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string dayOfMonth = end_var;

		// hour
			skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			string hour = end_var;

		// sky
			skip_to_text(")", true);
			skip_to_text(",", true); skip_chars(DELIMITER);
			begin_var;
			skip_to_chars("'");
			sky = end_var;

			if (sky)
			{
				sky = skyMap[sky];
    
				if (!sky)
					sky = "0";

			// temperature
				skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
				begin_var;
				skip_to_chars("'");
				string tmpr = end_var;

			// humidity
				skip_to_text(",", true); skip_to_text(",", true); skip_to_text(",", true); skip_to_text(",", true); skip_chars(DELIMITER);
				begin_var;
				skip_to_chars("'");
				string humidity = end_var;

			// wind direction
				skip_to_text(",", true); skip_chars(DELIMITER);
				skip_to_chars(DELIMITER);
				skip_chars(DELIMITER);
				begin_var;
				skip_to_chars(DELIMITER);
				string windDirection = end_var;

			// wind speed
				skip_chars(DELIMITER);
				begin_var;
				skip_to_chars(DELIMITER);
				string windSpeed = end_var;

			// wind speed units
				skip_chars(DELIMITER);
				begin_var;
				skip_to_chars(DELIMITER);
				string windSpeedUnits = end_var;
    
				add_day;
			}
		}

		dayIndex = dayIndex + ".";
	}
}
