function fadeTo(elFrom, elTo) {

    fadeOutFx = new Fx.Styles(elFrom, {duration: 500});
    fadeOutFx.start({ opacity: [1, 0]}).chain(
    function(){
        $(elFrom).setStyle('display','none');
        fadeInFx = new Fx.Styles(elTo, {duration: 500});
        $(elTo).setStyles({opacity: 0, display: 'block' });
        fadeInFx.start({ opacity: [0, 1]});   
      });   
}

Window.onDomReady(
    function(){

      editLocation = $('edit_location');
      if(editLocation)
      {
         editLocation.addEvent('click', 
         function(e){


           e = new Event(e);
           e.stop();
           fadeTo('weather_info', 'weather_location');
           });
      }

      weatherForm = $('weather_form');
      if(weatherForm)
      {
         weatherForm.addEvent('submit', 
         function(e){


           e = new Event(e);
           e.stop();

           
           zipcode = $('zipcode').value;
           zipcode = zipcode.trim();
           if(zipcode=='')
           {
                fadeTo('weather_location', 'weather_info');
           }
           else
           {
             fadeTo('weather_location', 'weather_loader');

             $('weather_form').send({update: $('weather_details'), onComplete: 
                  function(){
                  fadeTo('weather_loader', 'weather_info');
               }});
           }     
        });
      }
      });