/*
     ______      _             _ 
    |  ____|    | |           | |
    | |__  _   _| |__    _ __ | |
    |  __|| | | | '_ \  | '_ \| |
    | |___| |_| | | | |_| | | | |
    |______\__,_|_| |_(_)_| |_|_|

    Awareness Campaign NL

    
    Author : Michael Fallise (mike@nightshift.be)    
    Copyrights : (c) 2009 E.S.N. (visit at http://www.esn.eu) 

*/

/*
    Helper functions
*/
 
function saveUserProperty(el) {
  var url = base_url + 'member/setproperty/' + el.get('name');
  var req = new Request({url: url, method: 'post'});
    
  req.send(el.get('name') + '=' + el.get('value'));
  var field = el.getParent();
  field.setStyle('background-color', '#66ff66');
  var fx = new Fx.Morph(field, {duration:1000, transition: Fx.Transitions.Sine.easeOut}).start({'background-color': '#fff'});
}

function alertRequestSuccess() {
    var box = new SexyAlertBox();
    box.alert('Request ok message');
}

function showGuidelines() {
    var url = base_url + 'site/guidelines/';
    var req = new Request({
        'url': url,
        'method': 'get',
        onSuccess: function(response) {
            var box = new SexyAlertBox({});
            box.alert(response);
        }
    });
    req.send();
}

function noticeAbuse(id) {
  var box = new SexyAlertBox({ });
  var url = base_url + 'member/complain/' + id;
  var form = '<h1>Waarschuw redactie</h1>';

  form += '<p>Je kan via deze weg een beroep doen op de redactie als je denkt dat een  reactie niet aan de regels voldoet.</p>';
  form += '<p>Als je op de knop « verstuur » klikt, krijgt de redactie automatisch een email. ';
  form += 'Deze email zal zo snel mogelijk worden behandeld. Houd er rekening mee dat binnen een community altijd enige ruimte is voor meningsverschillen. ';
  form += 'Bedankt voor je oplettendheid.</p>';
  form += '<textarea class="test" id="message"></textarea>';

  box.complex(form, { inputFieldsClass: 'test',
      onComplete: function(fields) { 
          msg = fields.message.trim();
          var req = new Request({ url: url,
                                  method: 'post', 
                                  onComplete: function() {
                                      alertRequestSuccess();
                                  } 
          });
          req.send('message=' + msg);
      }
  });
} 

function initCommentPage(el) {
  
  var pageScroll = new Fx.Scroll(window);
  
  el.addEvent('click', function() {
    this.set('rel', this.get('href'));
    this.set('href','#');
    request = new Request({
        'evalResponse': false,
        'method': 'get',
        'url': this.get('rel'),
        onSuccess: function(response) {
          
          pageScroll.toElement($('comments'));
          var fadeIn = new Fx.Morph($('comments'),{
            duration: 500,
            onComplete: function() {   
                var fadeOut = new Fx.Morph($('comments'),{ duration: 1000 }); 
                $('comments').set('html', response);
                $each($('comments').getElements('.paging a'), function(item) {
                    initCommentPage(item); 
                });  
                fadeOut.start({opacity: [0,1]});
            }
          }); 
          fadeIn.start({ opacity : [1,0] });
        }
    });
    request.send();  
  })
}

/*
    Events builder
*/

// comments Handling
window.addEvent('domready', function() {
    if($('comments')) {
      // global declarations
      
      var pageScroll = new Fx.Scroll(window);
      // paging system 
      $each($$('.paging a'),function(item) {
        initCommentPage(item);
      });
      // Quote buttons
      $each($$('.quote-copier'),function(item) {
          item.addEvent('click',function(e){
              e.stop();
              quote = this.getParent('.comment').getElement('.content').get('html');
              author = this.getParent('.comment').getElement('.author .name').get('text');
              if(quote && author) {
                var text = $('comment-form').getElement('textarea');
                  text.set('value', '[quote=' + author + ']' + quote + '[/quote]\n\n');
                  text.focus();
              }
          });
             
      });
      // Abuse report buttons
      $each($$('.comment-abuse'), function(item) {
          item.addEvent('click', function() {
            noticeAbuse(this.rel);
          })    
      });
      // Form Handling
      if($('comment-form')) {
        // guidelines
        if($('guidelines')) {
            
            $('guidelines').addEvent('click', showGuidelines);
            
        }
          // Create validations
          form = $('comment-form');
          
          submit = form.getElement('input[type="submit"]');
          
          // new form post 
          submit.addEvent('click',function(e) {
            new Event(e).stop();
              // preparing element
              var user = this.getElement('#comment_user');
              var text = this.getElement('textarea');
              var li = new Element('li');
              var loader = new Element('div', {'class': 'comment loader'});
              li.grab(loader);
              li.inject($('comments').getElement('ul'),'top');
              pageScroll.toElement($('cartoon'));
              // send comment to server
              request = new Request({
                  'evalResponse': false,
                  'method': 'post',
                  'url': this.action,
                  'data': {
                      'comment': text.value,
                      'comment_user': user.value
                  },
                  onSuccess: function(response) {
                      var fadeIn = new Fx.Morph(li,{
                              duration: 1000,
                              onComplete: function() {
                                     
                                  li.set('html', response);
                                  fadeOut.start({opacity: [0,1]});
                              }
                      }); 
                      var fadeOut = new Fx.Morph(li,{ duration: 1000 }); 
                      fadeIn.start({ opacity : [1,0] });
                      text.value = '';
                  }
              });
              
              request.send();
              //return false; // no form submit
              
          }.bind(form));
          
      }
    }
}); 

// Initialize thumb galeries
window.addEvent('domready', function() {
    // tooltips
    var tips = new Tips($$('.comic-list li a'), {
      'className': 'tooltip'
    });
    // scrollable lists
    $each($$('div.comic-list.horizontal '),function(item) {
        var scroller = new MooScroll(item); 
    })
    
}); 
// user profile form 
window.addEvent('domready', function() {
    
    if($('frm-user-profile')) {
      // link events
      $('country_id').addEvent('change', function() { saveUserProperty(this) });
      $('user_age').addEvent('change', function() { saveUserProperty(this) });
      $each($$('input[name=user_gender]'), function(item) {
        item.addEvent('change', function() { saveUserProperty(this) });
      });
      $each($$('input[name=user_icon]'), function(item) {
        item.addEvent('change', function() { saveUserProperty(this) });
      });      
    }

}); 
// rating
window.addEvent('domready', function() {    
    if(form = $('rating')) {
      var r = new MooRating($('rating'),{
        'locked': (form.getElement('input[name=locked]').get('value') != 0),
        'onTest': function(str) { 
          url = form.getElement('form').get('action')+'/'+(parseInt(str * 5) + 1);
          var req = new Request({
            url: url,
            method: 'get',
            onSuccess: function(response) {
              r.setValue(response);
              $('rating-score-rating').set('text',response * 5);
              $('rating-score-count').set('text',parseInt($('rating-score-count').get('text'))+ 1);
            }
          })
          req.send();
        }});
    }
});
// selects login input texts on focus
window.addEvent('domready', function() {  

    if($('member-panel-login')) {
        $each($$('input[type=text]','input[type=password]'), function(item) {
            item.addEvent('focus', function() {
                this.select()
            });
        });
    }
});
// fix ie radio backgrounds 
window.addEvent('domready', function() {      

    $each($$('input[type=radio]'), function(item) {
        item.setStyle('background-image', 'none');
    });

});

// Comment deletation
window.addEvent('domready', function() {      
    
    $each($$('.comment-delete'), function(item) {  
        var comment = item.getParent().getParent().getParent().getParent().getParent();
        item.addEvent('click', function(button) {
            var url = base_url + 'member/delete_comment/' + item.rel; 
            var req = new Request({
                url: url,
                method: 'get',
                onSuccess: function(response) {
                    comment.destroy();
                }
              })
              req.send();
        });
        var id = item.rel;
        
    });

});

var base_url = 'http://www.euh.nu/';