function ClearSearchfor()
{
    document.getElementById("PostalCode").value = "";
    document.getElementById("CityCode").value = "0"
}

function SearchPostalCode()
{
    var xmlHttp = new clsHTTPRequest();
    var searchfor;

    searchfor = document.getElementById("PostalCode").value;

    if (searchfor.indexOf(' ') == -1) {
        searchfor = searchfor.substr(0, 3) + " " + searchfor.substr(3);
    }

    if (searchfor.length == 7)
    {
        EnableLoadMask();
        
        $.ajax({
			complete: function(XMLHttpRequest, textStatus){
				DisableLoadMask();
			},
			data: {
			    Type: 'getLocationsXML.aspx',
				SearchString: searchfor,
				unittype: '',
				OutputType: '',
				citycode: ''
			},
			dataType: 'xml',
			error: function(XMLHttpRequest, textStatus, errorThrown){
			
			},
			method: 'GET',	
			success: function(data, textStatus){
				//console.log(data, textStatus);

                var xmldoc = data;
                var counter = 0;

                var locs = xmldoc.getElementsByTagName("aws:location");
                for (var i = 0; i < locs.length; i++)
                {
                    if (locs[i].attributes.getNamedItem("countryname").nodeValue == "Canada")
                    {
                        SetCookie('WeatherBugCity', locs[i].attributes.getNamedItem("cityname").nodeValue, 365)
                        SetCookie('WeatherBugCityCode', locs[i].attributes.getNamedItem("citycode").nodeValue, 365)
                        GetWeather2(locs[i].attributes.getNamedItem("citycode").nodeValue);
                        counter = 1
                        break;
                    }
                }
                if (counter == 0)
                {
                    SetCookie('WeatherBugCity', '', -1)
                    SetCookie('WeatherBugCityCode', '', -1)
                }
			},	
			//url: 'getdata.aspx'
			url: 'getdata.jsp'
        });
    }
}

function GetWeatherFromCookie() {
    var citycode = GetCookie('WeatherBugCityCode');

    if (citycode.length > 0)
    {
        ClearSearchfor();
        GetWeather2(citycode);
    }
}

function GetWeather()
{
    var searchfor;
    searchfor = document.getElementById("CityCode").value;
    GetWeather2(searchfor)

    SetCookie('WeatherBugCityCode', searchfor, 365)
}

function GetWeather2(citycode) {
    var xmlHttp = new clsHTTPRequest();

    if (citycode !=  "0") {

        document.getElementById("PostalCode").value = "";
		
		EnableLoadMask();

		$.ajax({
		    complete: function(XMLHttpRequest, textStatus)
		    {
		        DisableLoadMask();
		    },
		    data: {
		        Type: 'getLiveWeatherRSS.aspx',
		        SearchString: 0,
		        unittype: 1,
		        OutputType: 1,
		        citycode: citycode
		    },
		    dataType: 'xml',
		    error: function(XMLHttpRequest, textStatus, errorThrown)
		    {

		    },
		    method: 'GET',
		    success: function(data, textStatus)
		    {
		        //console.log(data, textStatus);

		        document.getElementById("welcomePage").style.display = "none";
		        document.getElementById("Details").style.display = "block";


		        var xmldoc = data;
		        var xmlElement;
		        var htmlElement;

		        document.getElementById("DayForecast").style.display = "none";
		        document.getElementById("CurrentConditionsData").style.display = "block";

		        // City
		        xmlElement = xmldoc.getElementsByTagName("aws:city-state")[0];
		        htmlElement = document.getElementById("Location");
		        htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue;

		        // Current Condition
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:current-condition")[0];
		            htmlElement = document.getElementById("Condition");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue;
		            htmlElement = document.getElementById("ConditionImage");

		            //http://deskwx.weatherbug.com/images/Forecast/icons/                    
		            var icon_ConditionImage = xmlElement.attributes.getNamedItem("icon").nodeValue;
		            icon_ConditionImage = icon_ConditionImage.replace(/http:\/\/deskwx.weatherbug.com\/images\/Forecast\/icons\//, 'doood');
		            htmlElement.src = icon_ConditionImage;
		            alert(htmlElement.src);
		            htmlElement.src = xmlElement.attributes.getNamedItem("icon").nodeValue;
		        }
		        catch (e)
		        {
		        }

		        // Temperature:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:temp")[0];
		            htmlElement = document.getElementById("Temperature");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue + " °C";
		        }
		        catch (e)
		        {
		        }

		        // Wind Speed:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:wind-speed")[0];
		            htmlElement = document.getElementById("WindSpeedValue");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue + " ";
		            htmlElement.innerHTML += xmlElement.attributes.getNamedItem("units").nodeValue + " ";

		            xmlElement = xmldoc.getElementsByTagName("aws:wind-direction")[0];
		            htmlElement.innerHTML += xmlElement.childNodes[0].nodeValue;

		        }
		        catch (e)
		        {
		        }

		        // Humidity:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:humidity")[0];
		            htmlElement = document.getElementById("HumidityValue");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue + " ";
		            htmlElement.innerHTML += xmlElement.attributes.getNamedItem("units").nodeValue;
		        }
		        catch (e)
		        {
		        }


		        // Dew Point:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:dew-point")[0];
		            htmlElement = document.getElementById("DewPointValue");
		            htmlElement.innerHTML = new Number(xmlElement.childNodes[0].nodeValue).toFixed(2) + " °C"; //&deg; = °
		        }
		        catch (e)
		        {
		        }

		        // Gusts:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:gust-speed")[0];
		            htmlElement = document.getElementById("GustsValue");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue + " ";
		            htmlElement.innerHTML += xmlElement.attributes.getNamedItem("units").nodeValue + " ";

		            xmlElement = xmldoc.getElementsByTagName("aws:gust-direction")[0];
		            htmlElement.innerHTML += xmlElement.childNodes[0].nodeValue;
		        }
		        catch (e)
		        {
		        }

		        // Pressure:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:pressure")[0];
		            htmlElement = document.getElementById("PressureValue");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue + " ";
		            htmlElement.innerHTML += xmlElement.attributes.getNamedItem("units").nodeValue;
		        }
		        catch (e)
		        {
		        }


		        // Precipitation:
		        try
		        {
		            xmlElement = xmldoc.getElementsByTagName("aws:rain-rate")[0];
		            htmlElement = document.getElementById("PrecipitationValue");
		            htmlElement.innerHTML = xmlElement.childNodes[0].nodeValue + " ";
		            htmlElement.innerHTML += xmlElement.attributes.getNamedItem("units").nodeValue;
		        }
		        catch (e)
		        {
		        }

		        GetForecast(citycode);

		    },
		    // url: 'getdata.aspx'
		    url: 'getdata.jsp'
		});        
    }
}

function GetForecast(citycode)
{
    var xmlHttp = new clsHTTPRequest();

    if (citycode.length > 0) {       
        EnableLoadMask();
        
        $.ajax({
			complete: function(XMLHttpRequest, textStatus){
				DisableLoadMask();
			},
			data: {
			    Type: 'getForecastRSS.aspx',
			    SearchString: 0,
		        unittype: 1,
		        OutputType : 1,
		        citycode: citycode
			},
			dataType: 'xml',
			error: function(XMLHttpRequest, textStatus, errorThrown){
			
			},
			method: 'GET',	
			success: function(data, textStatus){
				//console.log(data, textStatus);

                var xmldoc = data;

                var xmlElement;
                var htmlElement;
                var cname;

                // Day Name
                xmlElement = xmldoc.getElementsByTagName("aws:title");
                for (var i = 0; i < 5; i++) {
                    cname = "D" + (i + 1) + "Name"
                    htmlElement = document.getElementById(cname);
                    htmlElement.innerHTML = xmlElement[i].childNodes[0].nodeValue;
                }

                // Day Name b
                var d = new Date();
                var date;

                for (var i = 0; i < 5; i++)
                {
                    date = (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear();
                    cname = "D" + (i + 1) + "Nameb";
                    htmlElement = document.getElementById(cname);
                    htmlElement.innerHTML = date;
                    d.setDate(d.getDate() + 1);
                }

                
                

                // Image
                xmlElement = xmldoc.getElementsByTagName("aws:image");
                for (var i = 0; i < 5; i++) {
                    cname = "D" + (i + 1) + "Image"
                    htmlElement = document.getElementById(cname);

					//http://deskwx.weatherbug.com/images/Forecast/icons/                    
					var icon_Image = '';
					icon_ConditionImage = xmlElement[i].childNodes[0].nodeValue.replace(/http:\/\/deskwx.weatherbug.com\/images\/Forecast\/icons\//, 'images/small/');
					icon_ConditionImage = icon_ConditionImage.replace(/\.gif/, '.png');
					
					htmlElement.src = icon_ConditionImage;
                }

                //High
                xmlElement = xmldoc.getElementsByTagName("aws:high");
                for (var i = 0; i < 5; i++) {
                    cname = "D" + (i + 1) + "HighValue"
                    htmlElement = document.getElementById(cname);
                    htmlElement.innerHTML = xmlElement[i].childNodes[0].nodeValue;
                    htmlElement.innerHTML += xmlElement[i].attributes.getNamedItem("units").nodeValue;
                }

                //Low
                xmlElement = xmldoc.getElementsByTagName("aws:low");
                for (var i = 0; i < 5; i++) {
                    cname = "D" + (i + 1) + "LowValue"
                    htmlElement = document.getElementById(cname);
                    htmlElement.innerHTML = xmlElement[i].childNodes[0].nodeValue;
                    htmlElement.innerHTML += xmlElement[i].attributes.getNamedItem("units").nodeValue;
                }

			},	
			//url: 'getdata.aspx'
			url: 'getdata.jsp'
        });
    }
}

function ShowForecastDay(day) {
    var xmlHttp = new clsHTTPRequest();
    var citycode = GetCookie('WeatherBugCityCode');

    day--;

    if (citycode.length > 0) {
		EnableLoadMask();
		
        $.ajax({
			complete: function(XMLHttpRequest, textStatus){
				DisableLoadMask();
			},
			data: {
			    Type: 'getForecastRSS.aspx',
			    SearchString: 0,
			    unittype: 1,
			    OutputType: 1,
			    citycode: citycode
			},
			dataType: 'xml',
			error: function(XMLHttpRequest, textStatus, errorThrown){
			
			},
			method: 'GET',	
			success: function(data, textStatus){
				//console.log(data, textStatus);

                var xmldoc = data;
                var xmlElement;
                var htmlElement;

                document.getElementById("CurrentConditionsData").style.display = "none";
                document.getElementById("DayForecast").style.display = "block";

                // Image
                xmlElement = xmldoc.getElementsByTagName("aws:image");
                htmlElement = document.getElementById("PImage");

				//http://deskwx.weatherbug.com/images/Forecast/icons/                    
				var icon_Image = '';
				icon_ConditionImage = xmlElement[day].childNodes[0].nodeValue.replace(/http:\/\/deskwx.weatherbug.com\/images\/Forecast\/icons\//, 'images/large/');
				icon_ConditionImage = icon_ConditionImage.replace(/\.gif/, '.png');

                htmlElement.src = icon_ConditionImage;

                // Dayof
                xmlElement = xmldoc.getElementsByTagName("aws:title");
                htmlElement = document.getElementById("DayName");
                htmlElement.innerHTML = xmlElement[day].childNodes[0].nodeValue;

                xmlElement = xmldoc.getElementsByTagName("aws:short-prediction");
                htmlElement = document.getElementById("PCondition");
                htmlElement.innerHTML = xmlElement[day].childNodes[0].nodeValue;

                // Prediction
                xmlElement = xmldoc.getElementsByTagName("aws:prediction");
                htmlElement = document.getElementById("Prediction");
                htmlElement.innerHTML = FixDegree(xmlElement[day].childNodes[0].nodeValue);

                //High
                xmlElement = xmldoc.getElementsByTagName("aws:high");
                htmlElement = document.getElementById("PHighValue");
                htmlElement.innerHTML = xmlElement[day].childNodes[0].nodeValue;
                htmlElement.innerHTML += xmlElement[day].attributes.getNamedItem("units").nodeValue;

                //Low
                xmlElement = xmldoc.getElementsByTagName("aws:low");
                htmlElement = document.getElementById("PLowValue");
                htmlElement.innerHTML = xmlElement[day].childNodes[0].nodeValue;
                htmlElement.innerHTML += xmlElement[day].attributes.getNamedItem("units").nodeValue;

			},	
			//url: 'getdata.aspx'
			url: 'getdata.jsp'
        });

    }
}



function GetRSS()
{
    var citycode = GetCookie('WeatherBugCityCode');

    if (citycode.length > 0)
    {
       window.open("http://api.wxbug.net/getLiveWeatherRSS.aspx?ACode=A4450492553&unittype=1&OutputType=0&citycode=" + citycode)
    }

}

function SetCookie(c_name, value, expiredays)
{
    var exdate = new Date();

    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie = c_name + "=" + escape(value) +
    ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString());
}

function GetCookie(c_name)
{
    var cstart, cend;

    if (document.cookie.length > 0) {
        c_start = document.cookie.indexOf(c_name + "=");
        if (c_start != -1) {
            c_start = c_start + c_name.length + 1;
            c_end = document.cookie.indexOf(";", c_start);
            if (c_end == -1) c_end = document.cookie.length;
            return unescape(document.cookie.substring(c_start, c_end));
        }
    }
    return "";
}

function FixDegree( value) {
    //&deg; = °
    do
       value = value.replace('&deg;', '°');
    while (value.indexOf("&deg;") >= 0);
    return value;
}

/*
Enable LoadMask while content is transferred from WeatherBug.
*/
function EnableLoadMask()
{
	$('<div id="ajax_overlay"></div>').css({
		backgroundColor: '#f1f1f1',
		height: '100%',
		left: '0',
		position: 'absolute',
		top: '0',
		width: '100%',
		filter: 'alpha(opacity=60)'
	}).appendTo('#main');

	$('<img id="ajax_loader" src="images/ajax-loader.gif" />').css({
		display: 'block',
		left: '50%',
		marginLeft: '-16px',
		marginTop: '-16px',
		position: 'absolute',
		top: '50%'
	}).appendTo('#main');
}

/*
Disable (turn off) the loading mask once the SOAP request has ended.
*/
function DisableLoadMask()
{
	$('#ajax_loader, #ajax_overlay').remove();
}

$glb_dataObjectType = new Number(-2)
function clsHTTPRequest()
{

    var iexmlclasses = ['Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];
    var httpObj = null;

    if ($glb_dataObjectType == -1)
    {
        httpObj = new XMLHttpRequest();
    } else if ($glb_dataObjectType > -1)
    {
        httpObj = new ActiveXObject(iexmlclasses[$glb_dataObjectType]);
    } else
    {
        try
        {
            httpObj = new XMLHttpRequest();
            _glb_dataObjectType = -1
        } catch (e)
        {
            for (var llp = 0; llp < 3; llp++)
            {
                try
                {
                    httpObj = new ActiveXObject(iexmlclasses[llp]);
                    $glb_dataObjectType = llp;
                    break;
                } catch (e) { }
            } // end llop
        } // end catch
    } // end else

    if (httpObj == null)
    {
        //alert('unable to instantiate xml request object')
        return null
    } else
    {
        return httpObj
    }
}
