var weatherUnderground = {

    getWeather: function(divId, zipcode)
    {
	    if( divId && zipcode && 
	        divId.length > 0 && zipcode.length > 0 )
	    {
            var params = "query=" + zipcode;

            var that = this;
         
            this._sendAjaxRequest( params , function(responseXML) {            
                that._populateDresults(divId, responseXML);            
            });
        }
    },

    _populateDresults : function(divId, responseXML)
    {
        var divObj = document.getElementById(divId);

        var resultsHtml = "";
        
        var baseObj = responseXML.getElementsByTagName('weather')[0]
        if( baseObj )
        {
            var location = this._getInnerText(baseObj.getElementsByTagName('location')[0]);
            var currTemp = this._getInnerText(baseObj.getElementsByTagName('tempF')[0]);
            var condition = this._getInnerText(baseObj.getElementsByTagName('condition')[0]);
            var iconURL = this._getInnerText(baseObj.getElementsByTagName('icon')[0]);
            
            var highTemp = this._getInnerText(baseObj.getElementsByTagName('todays_forecast')[0].getElementsByTagName('high')[0].getElementsByTagName('temp')[0] );
            var lowTemp =  this._getInnerText(baseObj.getElementsByTagName('todays_forecast')[0].getElementsByTagName('low')[0].getElementsByTagName('temp')[0] );

            resultsHtml += "<div class='weatherunderground'>";
            resultsHtml += "  <img src='" + iconURL + "' class='icon'>";
            resultsHtml += "  <div class='current'>";
            resultsHtml += "    <span class='temp'> " + currTemp + "&deg; </span><br>";
            resultsHtml += "    <span class='conditions'> " + condition + " </span><br>";
            resultsHtml += "    <span class='hi'>Hi: " + highTemp + " </span><br>";
            resultsHtml += "    <span class='lo'>Lo: " + lowTemp + " </span><br>";
            resultsHtml += "  </div>";
            resultsHtml += "  <br style='clear:both;'>";
            resultsHtml += "</div>";
            
            divObj.innerHTML = resultsHtml;
        }        
    },

    _getInnerText: function( element )
    {
        var returnedText = "";
    
        if( element )
        {
            if( element.textContent )
                returnedText = element.textContent;
            else if( element.text )
               returnedText = element.text;
        }

        if( returnedText.indexOf("[CDATA[") > -1 )
        {
            returnedText = returnedText.substring(7);
        }
    
        if( returnedText.lastIndexOf("]]") > -1 )
        {
            returnedText = returnedText.substring(0, returnedText.lastIndexOf("]]") );
        }

        return returnedText;
    },

    _createXMLHttpRequest : function() 
    {
        if (typeof XMLHttpRequest != "undefined") 
        {
            return new XMLHttpRequest();
        }  
        else if (typeof ActiveXObject != "undefined") 
        {
            return new ActiveXObject("Microsoft.XMLHTTP");
        } 
        else 
        {
            throw new Error("XMLHttpRequest not supported");
        }
    },

    _sendAjaxRequest : function( params , callbadkFn )
    {
        var xhtObj = this._createXMLHttpRequest();

        xhtObj.open("GET", "/common/wu_code/wuproxy.php?" + params, true);
        xhtObj.onreadystatechange = function() 
        {
            if (xhtObj.readyState == 4) 
            {
                if( xhtObj.responseXML != null )
                {
                    callbadkFn (xhtObj.responseXML);
                } 
            }
        }
        xhtObj.send("");
    }	
};
