/**
 * webduo. contact form script
 *
 * @version 0.07
 * @author Janusz Dusza
 * @copyright (c) 2008 webduo s.c.
 */

Element.implement({
  shide: function(){
    this.setStyles({
      display: 'none',
      opacity: 0
    });
  },

  sfade: function(qty){
    this.setStyle('display', 'block');
    this.fade(qty);
  },

  sclear: function(){
    var inputs = ['input', 'textarea'];
    if(inputs.contains(this.get('tag')))
      this.set('value', '');
  }
});

var validate = function(set){
  $each(set, function(value, key){
    var input = $(key);
    if(input)
      input.getPrevious().addClass('warn').setProperty('title', value);
  });
}

var clearErrors = function(){
  $$('label').each(function(lbl){
    lbl.removeClass('warn');
    lbl.removeProperty('title');
  });
}

var clearForm = function(){
  $('fName').sclear();
  $('fEmail').sclear();
  $('fPhone').sclear();
  $('fWeb').sclear();
  $('fText').sclear();
  clearErrors();
}

var contactUs = function(){
  var info = $('stateInfo');
  var warn = $('stateWarn');
  var req = $('contactForm');

  req.set('send', {
    url: '/_posts,save',
    method: 'post',
    onRequest: function(){
      warn.shide();
      info.shide();
      clearErrors();
    },
    onSuccess: function(response){
      response = new JSON.decode(response);
      if(response.status == 'error'){
        validate(response);
        warn.sfade(1);
      } else if(response.status == 'allok'){
        clearForm();
        info.sfade(1);
      }
    }
  });

  $('fSubmit').addEvent('click', function(e){
    e.stop();
    req.send();
  });

  var formState = new Hash.Cookie('formstate', {
    duration: 0
  });

  var form = new Fx.Slide('contactForm', {
    mode: 'vertical',
    onComplete: function(){
      formState.set('open', form.open);
    }
  });

  if(formState.get('open')){
    form.show();
  } else{
    form.hide();
    $('contactForm').addClass('hide');
  }
  $('contactForm').removeClass('hide');

  $$('a.contactLink')[0].addEvent('click', function(e){
    e.stop();
    this.blur();

    if(form.open){
      clearForm();
      warn.shide();
      info.shide();
    }

    form.toggle();
  });
}
