/* -----------------------------------------------------------------------------
 * UI
 * -------------------------------------------------------------------------- */

var UI = {

  hideGrowl: function(){
    $('alerts').morph({'opacity': [1, 0]});
  },

  growl: function(){
    $('alerts').morph({'opacity': [0, 1]});
  },

  dismiss: function(){
    $('alerts').setStyle('display', 'none');
  },

  oShade: 0.8,

  oLayout: function(){
    $('overlay').setStyles({width: window.getScrollWidth(), height: window.getScrollHeight()});
  },
  
  mLayout: function(){
    var el = $('modal');
    el.setStyles({
      left: (window.getWidth()/2)-(el.getStyle('width').toInt()/2),
      // center, or top-align (+40px), the dialog
//    top: ((window.getHeight()/2)-(el.getStyle('height').toInt()/2))+window.getScrollTop()
      top: window.getScrollTop()+40
    });
  },

  mask: function() {
    UI.oLayout();
    new Fx.Style('overlay', 'opacity', {
      onComplete: function(){
        UI.mLayout();
        $('modal').setOpacity(1);
      }
    }).start(0, UI.oShade);
  },
  
  unmask: function() {
    $('modal').setStyles({left: 0, top: 0, opacity: 0});
    new Fx.Style('overlay', 'opacity', {
      onComplete: function(){
        $('overlay').setStyles({'width': 0, 'height': 0});
      }
    }).start(UI.oShade, 0);
  },
  
  expand: function(){
    var el = 'modal-scrollbox';
    var curHeight = $(el).getStyle('height').toInt();
    var newHeight = curHeight*2;
    var maxHeight = window.getHeight()-(36+3+42+80);
    if (newHeight > maxHeight) {
      newHeight = maxHeight;
    }
    new Fx.Style(el, 'height', {
      onComplete: function(){
        UI.oLayout();
        UI.mLayout();
      }
    }).start(curHeight, newHeight);
  },

  shrink: function(){
    var el = 'modal-scrollbox';
    var curHeight = $(el).getStyle('height').toInt();
    var newHeight = curHeight/2;
    var maxHeight = 50;
    if (newHeight < maxHeight) { newHeight = maxHeight; }
    new Fx.Style(el, 'height', {
      onComplete: function(){
        UI.oLayout();
        UI.mLayout();
      }
    }).start(curHeight, newHeight);
  }

};

// window.addEvent('domready', function(){
//  $('overlay').setOpacity(0);
//  $('modal').setOpacity(0);
// });
// 
// window.addEvent('resize', function(){
//  if ($('overlay').getStyle('opacity') > 0) {
//    UI.oLayout();
//    UI.mLayout();
//  }
//  var maxHeight = window.getHeight()-(36+3+42+80);
//  if ($('modal-scrollbox').getStyle('height').toInt() > maxHeight) {
//    $('modal-scrollbox').setStyle('height', maxHeight);
//  }
// });
// 
// window.addEvent('scroll', function(){
//  if ($('overlay').getStyle('opacity') > 0) { UI.mLayout(); }
// });

/* -----------------------------------------------------------------------------
 * HOME
 * -------------------------------------------------------------------------- */

var Contact = {

  send: function(){
    var old_button = $('contact_button').dispose();
    var new_button = new Element('img', {'src': '/images/buttons/wait.gif', 'alt': 'Please wait...'});
    new_button.inject($('contact_go'));
    $('contact').set('send', {
      url: '/handler.php',
      onSuccess: function(html) { Projects.response(html); },
      onFailure: function() { Projects.response('The request failed.'); },
      onComplete: function() {
        new_button.dispose();
        old_button.inject($('contact_go'));
      }});
    $('contact').send();
    return false;
  }
  
};

/* -----------------------------------------------------------------------------
 * ADMIN
 * -------------------------------------------------------------------------- */

Admin = {

  init: function(){

    if (document.getElementById('login')) $('login').addEvent('submit', function(){ return Admin.logIn(); });
		if (document.getElementById('login_go')) $('login_go').addEvent('click', function(){ return Admin.logIn(); });

		if (document.getElementById('getpass')) $('getpass').addEvent('submit', function(){ return Admin.getPass(); });
		if (document.getElementById('getpass_go')) $('getpass_go').addEvent('click', function(){ return Admin.getPass(); });

		if (document.getElementById('logout_go')) $('logout_go').addEvent('click', function(){ return Admin.logOut(); });
		
  },

  logIn: function(){
    var old_button = $('login_button').dispose();
    var new_button = new Element('img', {'src': '/images/buttons/wait.png', 'alt': 'Please wait...'});
    new_button.inject($('login_go'));
    $('login').set('send', {
      url: '/handler.php',
      onSuccess: function(html) {
        if (html == 'success') window.location = '/admin.php';
        else Admin.response(html);
      },
      onFailure: function() { Admin.response('The request failed.'); },
      onComplete: function() {
        new_button.dispose();
        old_button.inject($('login_go'));
      }});
    $('login').send();
    return false;
  },

  logOut: function(){
    $('logout_go').set('html', '<span class="note">Please wait&hellip;</span>');
    var logout = new Request({
      url: '/handler.php',
      onSuccess: function(html) {
        if (html == 'success') window.location = '/admin.php';
        else Admin.response(html);
      },
      onFailure: function() { Admin.response('The request failed.'); },
      onComplete: function() { $('logout_go').set('html', 'Log Out'); }
    });
    logout.send('action=logout');
    return false;
  },

  getPass: function() {
    var old_button = $('getpass_button').dispose();
    var new_button = new Element('img', {'src': '/images/buttons/wait.png', 'alt': 'Please wait...'});
    new_button.inject($('getpass_go'));
    $('getpass').set('send', {
      url: '/handler.php',
      onSuccess: function(html) { Admin.response(html); },
      onFailure: function() { Admin.response('The request failed.'); },
      onComplete: function() {
        new_button.dispose();
        old_button.inject($('getpass_go'));
      }});
    $('getpass').send();
    return false;
  },

  response: function(html) {
    if ($type($('alerts')) == false) {
      var alerts = new Element('div', {'id': 'alerts'});
      alerts.inject($('pagetext'), 'top');
    }
    if ($type($('response')) == false) {
      var response = new Element('p', {'id': 'response', 'class': 'error'});
      response.inject($('alerts'));
    }
    $('response').set('html', html);
  },
  
  act: function(fform, fview, faction, fid) {
    if (faction == 'delete') {
      if (confirm('Are you sure you want to delete that?')) {
        var form = $(fform);
        form.view.value = fview;
        form.action.value = faction;
        form.id.value = fid;
        form.submit();
      }
    } else {
      var form = $(fform);
      form.view.value = fview;
      form.action.value = faction;
      form.id.value = fid;
      form.submit();
    }
    return false;
  }

};

/* -----------------------------------------------------------------------------
 * ONDOMREADY EVENTS
 * -------------------------------------------------------------------------- */

window.addEvent('domready', function() {

  Admin.init();

//   var greeting = $('greeting'),
//       screenName = $('screenName'),
//       accountLink = $('account'),
//       signout = $('signout');
// 
//   if (greeting && signout && screenName) {
//     var screenNameValue = adobe.Cookie.get('SCREENNAME'),
//         rememberMe = adobe.Cookie.get('RMID'),
//         authenticAdobeId = adobe.Cookie.get('AUID');
//     if (screenNameValue) {
//       registerOnReady(function() {
//         screenName.set('html', screenNameValue);
//       });
//     }
//     if (rememberMe) {
//       greeting.setStyle('display', '');
//       accountLink.setStyle('backgroundImage', '');
//     }
//     if (authenticAdobeId) {
//       greeting.setStyle('display', '');
//       signout.setStyle('display', '');
//       accountLink.setStyle('backgroundImage', '');
//     }
//   }  

  var homeAccordion = new Accordion($('Home-Accordion'), '.AccordionPanelTab', '.AccordionPanelContent', {
    fixedHeight: 240,
    opacity: false
  });
  
  $$('.AccordionPanelTab').addEvent('mouseenter', function(){
    this.fireEvent('click');
  });

});
