var _isDead  = Prototype.Browser.IE && navigator.userAgent.indexOf('MSIE 6.') > -1;

if ( _isDead ) {
  _sess.ie_upgrade  = _sess.ie_upgrade || 'true';
}

//  Ajax
var $ajax = function() {};
$ajax.prototype = { 
  _ajax: {
    url:      '',
    data:     '',
    success:  $.fn,   
    type:     'GET',
    sync:     true,
    xhr:      function(){
      return Try.these(
        function() {return new XMLHttpRequest()},
        function() {return new ActiveXObject('Msxml2.XMLHTTP')},
        function() {return new ActiveXObject('Microsoft.XMLHTTP')}
      );
    }
  },
  confXhr: function(_cxhr, _fn, _json) { 
    var _isJSON = new RegExp('^("(\\\\.|[^"\\\\\\n\\r])*?"|[,:{}\\[\\]0-9.\\-+Eaeflnr-u \\n\\r\\t])+?$');
    _cxhr.onreadystatechange = function() { 
      if (_cxhr.readyState == 4) { 
        if (_cxhr.status == 200) {
          _xjson  = _isJSON.test(_cxhr.responseText) ? $.json.encode(_cxhr.responseText) : null;
          _fn.call(_cxhr, _json ? 
                            _xjson : 
                            { 
                              text: _cxhr.responseText, 
                              xml:  _cxhr.responseXML,
                              json: _xjson
                            }); 
        } 
      } 
    } 
  }, 
  getJSON:  function(_req) {
    _req.type = 'GET';
    this.ajax(_req, 'json');
  },
  get:      function(_req) { 
    _req.type = 'GET';
    this.ajax(_req);
  }, 
  post:     function(_req) { 
    _req.type = 'POST';
    this.ajax(_req);
  },
  ajax:     function(_req) {
    var _a    = $.extend( this._ajax, _req),
        _j    = arguments[1] ? true : false;
        _t    = _a.type.toLowerCase(),
        xhr   = this._ajax.xhr();
    
    if (xhr) { 
      this.confXhr(xhr, _a.success, _j); 
      xhr.open(_a.type, _a.url, _a.sync); 
      xhr.setRequestHeader('X-Requested-With', 'Worker-XMLHttpRequest'); 

      if ( _t == 'post' ) {
        xhr.setRequestHeader('Content type', 'application/x-www-form-urlencoded'); 
        xhr.setRequestHeader('Content-length', data.length); 
        xhr.setRequestHeader('Connection', 'close'); 
      }
      xhr.send(  _t == 'post' ? _a.data : '' ); 
    } 
  }
} 

String.prototype.pad = function(l, s, t){
    return s || (s = " "), (l -= this.length) > 0 ? (s = new Array(Math.ceil(l / s.length)
        + 1).join(s)).substr(0, t = !t ? l : t == 1 ? 0 : Math.ceil(l / 2))
        + this + s.substr(0, l - t) : this;
};

String.prototype.trim = function() {
  return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
  return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
  return this.replace(/\s+$/,"");
}
String.prototype.seoify = function() {
  return this.replace(/[^a-zA-Z 0-9]+/g,'').replace(/ /g, '-').toLowerCase();
}

String.prototype.clean = function() {
  ret = this.replace(/(\n\r|\n|\r)/gm,"<1br />").replace(/\t/g,"").replace(/\s+/g," ");
  return ret.replace(/\<1br \/>/gi, "\n");
}
String.prototype.stripslashes = function() {
  return  this.replace(/\\'/g,'\'')
                .replace(/\\"/g,'"')
                  .replace(/\\\\/g,'\\')
                    .replace(/\\0/g,'\0')
                      .replace(/\\&quot;/g, '"');
}

function IsNumeric(sText)
{
  var ValidChars  = '0123456789',
      IsNumber    = true, 
      Char;
  for (i = 0; i < sText.length && IsNumber == true; i++) { 
    Char = sText.charAt(i); 
    if (ValidChars.indexOf(Char) == -1) {
      IsNumber = false;
    }
  }
  return IsNumber;
}



String.prototype.ucfirst = function() {
    str = this;
    var f = str.charAt(0).toUpperCase();
    return f + str.substr(1);
}

Array.prototype.clean = function()
{ 
   var a;
   for (a = 0; a < this.length; a++) {
      if (this[a] == '') {         
         this.splice(a, 1);
         a--;
      }
   }
   return this;
};

Number.prototype.pad  = function (len) {
  var str = '' + this;
  while (str.length < length) {
      str = '0' + str;
  }

  return str;
}

function pad(number, length) {
  var str = '' + number;
  while (str.length < length) {
      str = '0' + str;
  }

  return str;
}

var jDate = {
 month: new Date().getMonth() + 1,
 day:   new Date().getDate(),
 year:  new Date().getFullYear
}



var Load = {
  loader: function ( element ) {
    return element.update( 
                Builder.node('img', { src : '/img/icons/icon_loader-trans.gif' } ) 
              ).addClassName('center');
  },
  unload: function ( element ) {
    return element.update('').removeClassName('center');
  }
};

Element.addMethods(Load);

Element.addMethods({
  exec: function (elem, fn) {
    return fn.call($(elem));
  }
});



var manage_dir  = '/manage';
var asset_dir   = '/assets';
var image_dir   = '/images';
var edit_dir    = '/editor';

var assets_user_dir = manage_dir + asset_dir + image_dir;
var thumbs_user_dir = manage_dir + edit_dir + '/jscripts/tiny_mce/plugins/imagemanager/stream/index.php?cmd=im.thumb&path=';



function triggerGrowlingAd() {
  if ( typeof g !== undefined ) {
    //g.growl( $('growling_ad').innerHTML,  { header: 'Advertisement', life: 5 } );
  }    
}
  
Object.extend(Function.prototype, {
  repeat: function () {
    var __method = this, args = $A(arguments), _interval = args.shift() * 1000;
    
    if (args.length==0) {
      return; //window.clearTimeout(this._timeout);
    }
    
    if (this._repeater) {
      delete this._repeater;
    }        
    
    if (!this._repeater)  {
      this._repeater = function() {
        // Let _method cancel repeat by doing "return false;"
        if (__method.apply(__method, args) !== false) {  
          window.setTimeout(function() {
            return __method._repeater.apply(__method._repeater, args);
          }, _interval);   
        }        
      }        
    }
    
    this._timeout = window.setTimeout(function() {
      return __method._repeater.apply(__method._repeater, args);
    }, _interval);    
    
    this.repeat.stop   = function () {
      this.repeat();
    }
  }
});
  
Event.observe(window, 'load', function () {
  
  if ( $('login') ) {
    $('login').observe('keyup', function (e) {
      if ( e.keyCode == 13 ) {
        $('login').submit();
      }
    });
  }
  
  if ( $('growling_ad') ) {
    if ( typeof g !== undefined )
      triggerGrowlingAd.delay(10);
  }

  if ( $('sf_note') ) {
    $('sf_note').value = document.title;
  }
  
  if ( $('active_search') && $('active_search').value !== '' ) {
    $$('.' +  $('active_search').value )
      .invoke('addClassName', 'active_tab');
  }

  $$('.tool_resize').each( function ( tool_resize ) {
    
    var cur_width = tool_resize.getWidth();
    var new_width = cur_width + 50;
    
    tool_resize.setStyle({ width : new_width + 'px' } );
  }); 
  
  
  $$('.actions').invoke( 'hide' );


  $$('.search_click').each( function (_search) {
    
    _search.observe('click', function (e) {
      $$('.search_click').invoke('removeClassName', 'active_tab');
      
      var _e    = Event.element(e),
          _id   = _e.id;
      
      $$('.' + _e.id)
        .invoke('addClassName', 'active_tab');
      
      $$('.store_active_search').each( function (store) {
        store.value = _id;
      });

      
      $$('.c_search').each( function (c_search) {
        c_search.action = _e.getAttribute('def');
      });
    });
  });  
  $$('.is_user').each( function (is_user) {
    is_user
      .observe('mouseover', 
        function (e) {
          if ( this.hasClassName('is_user') )
            this.down('div.actions').show();
      })
      .observe('mouseout', 
        function (e) {
          if ( this.hasClassName('is_user') )
            this.down('div.actions').hide();
      });
  });
});


function checkImgSrc(URL) {
    var tester=new Image();
    tester.onLoad=isGood;
    tester.onError=isBad;
    tester.src=URL;
}

var ad_hack_js  = false,
    ad_width    = '';

function closeParentContainer(e) 
{
  var close_el  = Event.element(e);
  
  $(close_el.up(2).id)
    .removeClassName('tool_open')
      .slideUp(slide_opt);
  
}

function closeThisContainer() 
{
  $('tool_panel')
    .removeClassName('tool_open')
      .slideUp(slide_opt);
  
  setupTabbedNavPanel.delay(2);
  
  is_hover  = false;
}

function panelClickHandler(e) 
{
  if ( !is_hover ) {
    closeThisContainer.delay(5);
  }
}

var is_hover  = false,
    is_open   = true,
    slide_opt = { duration  : .25 },
    delay_id  = null,
    cache_id  = null; 



function toggleToolPanel(e)
{ 

  var _pane   = typeof e === 'string' ? e : 'menu_' + Event.element(e).id;
  var _click  = typeof e === 'string' ? e : Event.element(e).id;

  if ( _click === null || _click === '' ) {
    _click  = Event.element(e).parentNode.id;
  }    
  
  
  if ( _click == 'post' ) {
    location.href = '/blogs/post-new/';
    return;
  }
  
  
  $$('.menu_pane')
    .invoke('removeClassName', 'open')
      .invoke('hide');

  $$('.multi_tool_kit')
    .invoke('removeClassName', 'multi_tool_kit_open');

  if ( _pane.split('_')[1] == '' )
    return;

  $(_click)
    .addClassName('multi_tool_kit_open');

  var pos_left  = $( _pane.split('_')[1] ).cumulativeOffset().left - 19;
      pos_left  = ( Prototype.Browser.IE ) ? ( pos_left + 2 ) : pos_left;

  if ( $(_pane) )
  {
    if ( $(_pane).hasClassName('open') ) 
      $(_pane).removeClassName('open').hide();

    else {
      
      var pos_bttm  = ( Prototype.Browser.IE ) ? '27px' : '27px';
      
      $(_pane)
        .addClassName('open')
          .setStyle({ left : pos_left + 'px', bottom: pos_bttm })
            .show();

      if ( _pane == 'menu_favs' )
        loadUserFavorites('added_on');

      if ( _pane == 'menu_faviconad' )
        $(_pane).setStyle( { width: '300px' } );
    }
  } 
}

var current_favs_int  = 0,
    current_init_bool = false;

function loadUserFavorites( _sort ) 
{
  var args  = 'sort_cmd=' + _sort;

  if ( $('menu_favs') )
  {
    new Ajax.Request(
      '/includes/xhr_load_site_favorites.php', 
      {
        method: 'get',
        parameters: args,
        onComplete: function (xhr) {

          var favs  = xhr.responseText.evalJSON();

          $('list_site_favs')
            .childElements()
              .invoke('remove');

          $('menu_favs').insert( { top: 'Loading...' } );           

          if ( favs !== null && favs.length > 0) {

            Element.remove($('menu_favs').firstChild);

            $('list_site_favs').insert(
              new Element('li', { className: 'first', style: 'border-bottom: 1px solid #ddd' } ).insert(
                new Element('a', { href: 'javascript:;', id : 'menu_favs_show' } ).insert(
                  'Recent Favorite Pages - Show All'
                ).observe( 'click', expandOverFlow.bind(this, 'menu_favs', 'menu_favs_show') )
              )
            );          
            favs.each( function (fav) {

              $('list_site_favs').insert(
                new Element('li', { className: 'list_sub_nav' } ).insert(
                  new Element('a', { href: fav.sf_context_uri } ).insert( 
                    fav.sf_note.stripslashes()
                  )
                )
              );
            });

            $('menu_favs').setStyle({ width : 'auto' });

          } else {

            Element.remove($('menu_favs').firstChild);

            $('list_site_favs').insert(
              new Element('li').insert(
                '<a>You have no favorites saved. <br><br> Favorites are a way of bookmarking diet.com content. '
                + '<br><br>In addition to the added convenience, you will also earn points for adding new favorites'
                + '<br><br>Buddies can also share there favorites!</a>'
              )
            );
          }
        }
      }
    );
  }
}


function expandOverFlow( e ) {

  if ( arguments[1] !== undefined ) {
    if ( $( arguments[1] ).innerHTML == 'Recent Favorites - Show All' ) {
      $( arguments[1] ).update('All Favorites - Show Recent');
    } else {
      $( arguments[1] ).update('Recent Favorites - Show All');
    }
  }

  var to_expand   = typeof e === 'string' ? $( e ) : Event.element(e);

  to_expand.setStyle( 
    to_expand.getStyle('overflow') === 'hidden' ?
      'overflow-y:scroll' :
      'overflow:hidden' 
  );
}

function forceToolPanel( type )
{
  var type  = type === undefined ? 'hide' : type;

  if ( type === 'hide' ) {
    $$('.menu_pane').invoke('hide').invoke('removeClassName', 'open');
    $$('.multi_tool_kit').invoke('removeClassName', 'multi_tool_kit_open');     
  }
}

function toggleMenuPane( _menu ) {
  $( _menu ).removeClassName('open').hide();
  $$('.multi_tool_kit').invoke('removeClassName', 'multi_tool_kit_open');
}

var observe_form_elements = function () {


  if ( !_isDead )
  {
    $$('select').each(function (_select) {
      if ( _select.hasClassName('gray') ) {
        _select.removeClassName('gray');
      }
    });    
    $$('input[type="text"]', 'input[type="password"]', 'textarea').each(function (_input) {

      if ( !_input.hasClassName('text') && !_input.hasClassName('no_modify') ) {
        _input.addClassName('text');
      }        

      var inval = _input.value ? _input.value :  $F(_input);

      _input
        .observe('focus', function(e) {

          var _e = Event.element(e);

          if ( _e.hasClassName('no_clear') ) {

            _e.addClassName('black')
                  .removeClassName('gray');
          }
          else {
            _e.addClassName('black')
                  .removeClassName('gray');

            if ( !_e.hasClassName('no_clear') ) {
              if ( _e.value == _e.getAttribute('default') )
                _e.value = '';
            }
          }
          _e.select();
        })
        .observe('blur', function(e) {

          var _e        = Event.element(e),
              _default  = _e.getAttribute('default') ? _e.getAttribute('default').trim() : '',
              _value    = _e.value == '' ? _default : _e.value ;

          _value = _value ? _value : '';

          if ( _value.trim() === _default ) {

            if ( _e.hasClassName('no_persist') ) {

              if ( _e.value === '' ) {
                _e.addClassName('gray')
                      .removeClassName('black')
                        .value  =  '';
              } else {
                _e.addClassName('gray')
                      .removeClassName('black')
                        .value  =  _e.getAttribute('default');
              }
            } 
            else {

              if ( _e.value !== _e.getAttribute('default') ) {

                if ( !_e.hasClassName('no_value_modify') ) {

                  if ( _e.value == '' ) {
                    _e.value  = _e.getAttribute('default');
                  }
                }                    
              } else {
                this.addClassName('gray')
                      .removeClassName('black')
                        .value  =  _e.getAttribute('default');
              }
            }
          }
        });
    });
  } else {
    
    
    $$('input[type="text"]', 'input[type="password"]', 'textarea').each(function (_input) {    
      _input.addClassName('black');
    });      
  
  
  }
}

document.observe('dom:loaded', function() {
  
  
  (function () {
    var _replaceImg = [ 'video.gif' ], 
        _replaceSrc = [ 'film.png'  ];

    $$('img[src]').each(function (_img) {

      var _imgSrcs  = _img.src.split('/'),
          _imgSrc, _imgIndex;

          _imgSrc   = _imgSrcs[_imgSrcs.length - 1];
          _imgIndex = _replaceImg.indexOf(_imgSrc);

      if ( _imgIndex >= 0 ) {
        _img.src  = '/img/icons/' + _replaceSrc[_imgIndex];
      }
    });
  })();

  $$('.tooltip').each( function (_tip) {
    //console.log(_tip);
    if ( _tip.title )  {
      var _title  = _tip.title;
      var _span   = new Element('p', { className: _tip.getAttribute('displayclass'), style: 'display:none' });
          _span.insert(_title);
    
      _tip.observe('mouseover', function (e) {
        Event.element(e).insert(_span).title = '';
        _span.show();
      }).observe('mouseout', function (e) {
        Event.element(e).title = _title;
        _span.remove();
      });
    }
  }); 

  
  /*
  if ( Prototype.Browser.IE ) {
  
    if ( $('header_box') )
    {
      if ( _isDead) {


      }
      else {
        var _boxLeftPos   =  $('header_box').cumulativeOffset().left;  

        $('top').select('.top_nav_button').each( function(_topNavBtn) {

          var _navLeftPx  = _topNavBtn.cumulativeOffset().left;
          var _navLi      = _topNavBtn.up('li');
          var _navUl      = _navLi.down('ul');
          var _navTopPos  = _navUl.cumulativeOffset().left
          var _navLeftPx  = ( _navLeftPx - _boxLeftPos ) - 2;

          _topNavBtn.observe( 'mouseover', function () {
            _navUl.setStyle({ 'left' : _navLeftPx + 'px' });
          }).observe( 'mouseout', function () {
            _navUl.setStyle({ 'left' : '-99999em' });
          });

          _navUl.observe( 'mouseover', function () {
            _navUl.setStyle({ 'left' : _navLeftPx + 'px' });
          }).observe( 'mouseout', function () {
            _navUl.setStyle({ 'left' : '-99999em' });
          });
        });
      }                
    }          
  }
  */


  
  if ( $('is_print_version') ) {
    return;
  }

  if ( $('wrap_query_results') ) {
    $$('.click_x').each(function (_close) {
      _close.observe('click', function () {
        $('wrap_query_results').hide();
      });
    });
  }
  
  if ( !_isDead )
  {
    
    if ( $('current_page') && $('current_page').value == 'signup' ) {
      var _fields  = $('frmPath').getElements(),
          _tabInt  = 40;
      _fields.each( function (_form) {
        if ( _form.tagName == 'INPUT' ) {
          _form.tabIndex = _tabInt++;
        }
      });
    }
    

    $$('input', 'textarea', 'select').each( function (_input) {  
      _input.setAttribute('default', _input.value);


      if ( !_input.hasClassName('gray') && !_input.hasClassName('no_class_alter') ) {
        _input.addClassName('gray');
      }

      _input.setAttribute('autocomplete', 'off');

      if ( _input.type == 'submit' || 
             _input.type == 'button' ) {
        _input.addClassName('button');      
      }
    });

    $$('select').each(function (_select) {
      if ( _select.hasClassName('gray') ) {
        _select.removeClassName('gray');
      }
    });    

    if ( $('login_div_container') )
    {
      $$('a[href="/home/login.php"]').each( function (_href) {

        _href.setAttribute('href', 'javascript:;');
        _href.observe( 'click', function () {

          $('login_div_container')
            .setStyle({ 'border' : '1px solid #ddd', 'padding-top' : '5px' })
              .update( '<hr class="whitespace">' )
                .insert( $('form_login').innerHTML + '<hr class="whitespace">' )
                  .highlight();


          var _form   = $('login_div_container').down('form'),
              _submit = $('login_div_container').descendants().grep(new Selector("a.click_login"))[0];

          if ( $('is_from_recipe') ) {
            $$('.redirector').each(function (_redirect) {
              var _redirectVal  = _redirect.value;
              r.value = _redirectVal + '#reviews';
            });
          }

          _form.id    = 'login_2';
          _form.name  = 'login_2';
          _submit
            .observe('click', function () {
              $('login_2').submit();
            });

          var tab = 50;
          $('login_div_container')
            .descendants()
              .each( function (desc) {
                if ( ['INPUT', 'A'].include(desc.tagName) ) {
                  desc.tabIndex = tab;
                  tab++;
                }
              });

          observe_form_elements();            

          $('login_div_container')
            .down('input')
              .focus();                

        });
      });
    }      
  }

//-------------------------------------------------------------------------
  $$('.multi_tool_kit').invoke('observe', 'click', toggleToolPanel);

  if ( $$('.wrap_tool_bar_footer').length > 0 )
  {
    document.observe('click', function (e) {
      if ( !e.target.getOffsetParent().hasClassName('wrap_tool_bar_footer') &&  
            !e.target.getOffsetParent().hasClassName('menu_pane') ) {
  
          forceToolPanel('hide');
      }
    });
  }    

  var observe_site_actions = function () {
  
    if ( $('link_send_message') ) {
      $('link_send_message').observe('click', showSendMessageFormFromIcon);
    }

    if ( $('profile_send_message') ) {
      $('profile_send_message').observe('click', showSendMessageFormInbox);
    }
    
    if ( $('toolbar_send_message') ) {
      $('toolbar_send_message').observe('click', showSendMessageFormInbox);      
    }

    if ( $('profile_send_invite') ) {
      $('profile_send_invite').observe('click', showInviteForm);
    }

    if ( $('profile_send_request') ) {
      $('profile_send_request').observe('click', showRequestForm);
    }

    if ( $('click_apply_contrib') ) {
      $('click_apply_contrib').observe('click', showApplyContribForm );
    }

    $$('.multi_login').each( function (multi_login) {
      multi_login.observe('click', showInnerLogin);
    });

    $$('.multi_image_upload').each( function(multi_image_upload) {

      multi_image_upload
        .observe('click', toggleImageUpload)
          .setAttribute({ title : 'Upload an image' });
    });
    
    $$('.multi_send_invite').each( function(multi_send_invite) {

      multi_send_invite
        .observe('click', showInviteForm)
          .setAttribute('title', 'Send Invite');
    });

    $$('.multi_send_message').each( function(multi_send_message) {

      multi_send_message
        .observe('click', showSendMessageFormFromIcon)
          .setAttribute('title', 'Send Message');
    });

    $$('.multi_send_email').each( function(multi_send_email) {

      multi_send_email
        .observe('click', showSendEmailFormFromIcon)
          .setAttribute('title', 'Send Email');
    });

    $$('.multi_delete_buddy').each( function (multi_delete_buddy) {

      multi_delete_buddy
        .observe('click', extractDeleteBuddy)
          .setAttribute('title', 'Remove Buddy');
    }); 

    $$('.multi_request_buddy').each( function (multi_request_buddy) {

      multi_request_buddy
        .observe('click', extractRequestBuddy)
          .setAttribute('title', 'Request Buddy');
    }); 

    $$('.multi_confirm_buddy').each( function (multi_confirm_buddy) {

      multi_confirm_buddy
        .observe('click', extractConfirmBuddy)
          .setAttribute('title', 'Confirm New Buddy');
    }); 

    $$('.multi_reject_buddy').each( function (multi_reject_buddy) {

      multi_reject_buddy
        .observe('click', extractRejectBuddy)
          .setAttribute('title', 'Deny Buddy');
    }); 

    $$('.multi_invite_buddy').each( function (multi_invite_buddy) {

      multi_invite_buddy
        .observe('click', extractInviteBuddy)
          .setAttribute('title', 'Invite To Your Groups');
    });

    $$('.multi_save_as').each( function (multi_save_as) {

      multi_save_as
        .observe('click', extractSaveAs)
          .setAttribute('title', 'save As');
    });
    
    $$('.multi_header_action').each(function (_ha) {
      _ha.has_action  = _ha.getAttribute('has_action');
    });
    
    $$('.multi_header_action').invoke('observe', 'click', delegateEventAction);
    
    $$('.multi_ask_question').invoke('observe', 'click', showAskQuestionForm);
    
    $$('.multi_site_favs').invoke('observe', 'click', addToSiteFavorites);
    
    $$('.multi_site_favs_x').invoke('observe', 'click', deleteFromSiteFavorites);

    $$('.multi_close_container').invoke('observe', 'click', closeParentContainer);

  }
  
  if ( $('trigger_print') ) {
    $('trigger_print').observe('click', function () {
      print();
    })
  }

  $$('.multi_printer').each( function (multi_printer) {
    multi_printer.observe('click', function ( evt ) {
      
      Lightview.show({
        href: location.href + '?print=true',
        rel:  'iframe',
        options: {
          autosize: true,
          topclose: false
        }
      });      
    });
  }); 

  $$('.can_delete').each( function (can_delete) {
    can_delete.observe('click', deleteUserComment);
  });
  
  $$('.can_flag').each( function (can_flag) {
    can_flag.observe('click', flagUserComment);
  });
  
  


  observe_form_elements();
  observe_site_actions();
  
  Ajax.Responders.register({
    onComplete: function () {
      observe_form_elements();
      observe_site_actions();
    }
  }); 
});


function  delegateEventAction(e) {
  var _e = Event.element(e);
  
  if ( !_e.hasClassName('multi_header_action') ) {
    _e  = _e.up('div.multi_header_action');
  }
  
  var _actions  = _e.getAttribute('has_action').split('|'), 
      _jsCmd;
      
  if ( !_user.session_logged_in  ) {
    location.href = _actions[1];
    return;
  }
  else {
  
    if ( _actions[0].indexOf('js:') == 0 ) {
      _jsCmd  = _actions[0].split(':')[1];
      
      if (typeof _jsCmd == 'string' &&  
            eval('typeof ' + _jsCmd) == 'function') {
              eval(_jsCmd + '()');
      }            
    }
    else {
      location.href = _actions[0];
    }
  }
}

function checkSpelling(e) {
}

function showInnerLogin (e) {
  
  if ( $('div_inner_login') ) {
    $('div_inner_login').remove();
  }
  
  var _e        = Event.element(e), 
      append_to = _e.up('li'),
      _formLogin = $('form_login').innerHTML, 
      _divLogin;
      
      _divLogin = new Element(
        'div', {
          className:'content span-9 class_inner_login',
          id:       'div_inner_login',
          title:    'Login',
          style:    'z-index:999;position:absolute;cursor:pointer;background: #fff;margin:0 -240px 0 0'//margin:0 -240px 0 0; width:230px;height:75px;
      }).insert(_formLogin);

  $(append_to).appendChild(_divLogin);
  
  
  var _form   = $('div_inner_login').down('form');
  var _submit = $('div_inner_login').descendants().grep(new Selector("a.click_login"))[0];


  $$('.redirector').each(function (_redirect) {
    var _redirectVal  = _redirect.value;
    _redirect.value   = _redirectVal;
  });

  _form.id    = 'login_3';
  _form.name  = 'login_3';

  _submit
    .observe('click', function () {
      $('login_3').submit();
    });

  var tab = 50;
  $('div_inner_login')
    .descendants()
      .each( function (desc) {
        desc.tabIndex = tab;
        tab++;
      });

  observe_form_elements();

  $('div_inner_login')
    .down('input')
      .focus();   

  function closeInnerLogin() {
    $('div_inner_login').remove();
  }
  
  closeInnerLogin.delay(10);
}


function toggleAnyButton( el, type )
{
  if ( $(el) ) {
    if ( type === 'show'  )
      $(el).show();
    else
      $(el).hide();
  }        
}

function showApplyContribForm(event) {
  Event.stop(event);
  Lightview.show({
    href: '/includes/xhr_cms_contrib_apply_form.php',
    rel:  'ajax',
    title: 'Become a contributor',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        onComplete: function(){
          $('contrib_apply').observe('submit', submitApplyContribForm);
        }
      }
    }
  });
}

function submitApplyContribForm(event) {

  Event.stop(event);
    
  Lightview.show({
    href: '/includes/xhr_cms_contrib_apply_form.php',
    rel:  'ajax',
    title:    'results',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'post',
        postBody: $('contrib_apply').serialize()
      }
    }
  });
}

function deleteFromSiteFavorites()
{
  var args  = [];
  
  $$('.sf_vars').each( function (_siteFav) {
    args.push( _siteFav.id + '=' + _siteFav.value );
  });
  
  new Ajax.Request(
    '/includes/xhr_delete_site_favorites.php', 
    {
      method: 'post',
      postBody: args.join('&'),
      onComplete: function (xhr) {
        var ret = xhr.responseText.evalJSON();
        
        if ( ret.response === 'success' ) {
        
          $('has_favs_x').hide();

          $('add_favs_x')
            .show()
              .highlight()
                .fade({ duration : 3.0 });

          $$('.menu_pane')
            .invoke('removeClassName', 'open')
              .invoke('fade', {duration: 0.1});

          $('menu_favs')
            .setStyle( { overflow : 'hidden' } );


          toggleAnyButton.delay(3, 'has_favs', 'show');
        }
      }
    }
  );
}

function deleteFromSiteFavoritesById(e)
{
  var args  = [];
  
  $$('.sf_vars').each( function (_siteFav) {
    args.push( _siteFav.id + '=' + _siteFav.value );
  });
  
  
  
  //////////////console.log(this);

  return;  
  new Ajax.Request(
    '/includes/xhr_delete_site_favorites.php', 
    {
      method: 'post',
      postBody: args.join('&'),
      onComplete: function (xhr) {
        var ret = xhr.responseText.evalJSON();
        
        if ( ret.response === 'success' ) {
        
          $('has_favs_x').hide();

          $('add_favs_x')
            .show()
              .highlight()
                .fade({ duration : 3.0 });

          $$('.menu_pane')
            .invoke('removeClassName', 'open')
              .invoke('fade', {duration: 0.1});

          $('menu_favs')
            .setStyle( { overflow : 'hidden' } );


          toggleAnyButton.delay(3, 'has_favs', 'show');
          
        }

      }
    }
  );
}



function addToSiteFavorites(e)
{
  var args  = [];
  
  $$('.sf_vars').each( function (_siteFav) {
    args.push( _siteFav.id + '=' + _siteFav.value );
  });

  new Ajax.Request(
    '/includes/xhr_save_site_favorite.php', 
    {
      method: 'post',
      postBody: args.join('&'),
      onComplete: function (xhr) {
        
        
        if ( $('has_favs') ) {
          $('has_favs').hide();
        }
        if ( $('has_favs_inner') ) {
          $('has_favs_inner').hide();
        }
        
        if ( $('add_favs') )  {
          $('add_favs')
            .show()
              .highlight()
                .fade({ duration : 3.0 });
        }
        if ( $('add_favs_inner') )  {
          $('add_favs_inner')
            .show()
              .highlight()
                .fade({ duration : 3.0 });
        }
        
        $$('.menu_pane')
          .invoke('removeClassName', 'open')
            .invoke('fade', {duration: 0.1});
            
        $('menu_favs')
          .setStyle( { overflow : 'hidden' } );
        
        
        $('notify_favs')
          .show()
            .fade({ duration: 5.0 });
            
        new Effect.Pulsate('favs');            
        
        toggleAnyButton.delay(3, 'has_favs_x', 'show');
        toggleAnyButton.delay(3, 'has_favs_x_inner', 'show');
      }
    }
  );
}




function deleteUserComment(evt) {
  
  var del_li  = Event.element(evt).up('li');
 
  var args    = 'sc_id=' + del_li.id;
  
  new Ajax.Request(
    '/includes/xhr_post_site_comment_del.php',
    {
      method: 'post',
      postBody: args,
      onComplete: function (xhr) {
        
        var del = xhr.responseText.evalJSON();
        
        if ( del.response == 'success' ) {
          del_li.remove();
          
          var comments  = $$('.comments');
          
          //////////////console.log('number of li: ' + comments.length);
          
          if ( comments.length == 0 ) {
            
            var cmt_li    = new Element('li',  { id : 'X', className: 'comments list fine-10' } );
                cmt_li.insert('<h3>No comments yet - be the first!</h3>');
            
            $('site_comment_thread').insert(cmt_li);
            
            $('form_post-comment-wrap').slideDown({duration:1}).enable();
          
          }
        }
      }
    }
  );
  
}


function flagUserComment(evt) {
  
  var del_li  = Event.element(evt).up('li');
  //////////////console.log(evt);
  //////////////console.log(del_li.id);
  
  var args    = 'sc_id=' + del_li.id;
  
  new Ajax.Request(
    '/includes/xhr_post_site_comment_flag.php',
    {
      method: 'post',
      postBody: args,
      onComplete: function (xhr) {
        
        var del = xhr.responseText.evalJSON();
        
        if ( del.response == 'success' ) {
          del_li.remove();

          var comments  = $$('.comments');
          
          //////////////console.log('number of li: ' + comments.length);
          
          if ( comments.length == 0 ) {
            
            var cmt_li    = new Element('li',  { id : 'X', className: 'comments list fine-10' } );
                cmt_li.insert('<h3>No comments yet - be the first!</h3>');
            
            $('site_comment_thread').insert(cmt_li);
            
            $('form_post-comment-wrap').slideDown({duration:1}).enable();
          
          }         
        }
      }
    }
  );
  
}


function toggleImageUpload()
{
  Lightview.show({
    href: '/includes/xhr_image_upload.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          save_type   : save_type, 
          save_title  : save_title, 
          save_href   : save_href
        }, 
        onComplete: function(){
          
          $('save_as_form').observe('submit', submitSaveAsForm).focusFirstElement();
          
          $('save_submit').focus();
        }
      }
    }
  });
}







function extractSaveAs(e) 
{

  var invite_str    = Event.element(e).getAttribute('saveas');
  
  
  if ( invite_str == 'undefined' || invite_str == '' ) {
    var icon_el   = _e.down();
    var invite_str  = icon_el.getAttribute('saveas');
  }
  
  var save_type   = invite_str.split('!')[0];
  var save_title  = invite_str.split('!')[1];
  var save_href   = invite_str.split('!')[2];

  showSaveAs(save_type, save_title, save_href);

}

function showSaveAs(save_type, save_title, save_href) {
  
  Lightview.show({
    href: '/includes/xhr_save_as.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          save_type   : save_type, 
          save_title  : save_title, 
          save_href   : save_href
        }, 
        onComplete: function(){
          
          $('save_as_form').observe('submit', submitSaveAsForm).focusFirstElement();
          
          $('save_submit').focus();
        }
      }
    }
  });
}

function submitSaveAsForm(event) {

  
  //alert($('profile_send_inv').serialize());


  
  Event.stop(event);
    
  Lightview.show({
    href: '/includes/xhr_save_as.php',
    rel:  'ajax',
    options: {
      title:    'results',
      menubar:  false,
      topclose: false,
      autosize: true,
      ajax: {
        parameters: Form.serialize('save_as_form')
      }, 
      onComplete: function () {
        $('alert_ok').focus == true;
        $('alert_ok').observe('click', removeDialog).focus();
      
      }
    }
  });
}




function save()
{
  alert(arguments);
}



function checkForBuddies() 
{
  if ( $$('.is_buddy').length == 0 ) {
    $('wrap_ref_list').update("<h3>You have no new buddy requests</h3>");
  }
}



function extractInviteBuddy(e) {

  var invite_str    = Event.element(e).getAttribute('invite');
  
  
  if ( invite_str == 'undefined' || invite_str == '' ) {
    var icon_el   = _e.down();
    var invite_str  = icon_el.getAttribute('invite');
  }
  
  var buddy_id  = invite_str.split('!')[0];
  var buddy_un  = invite_str.split('!')[1];
  var buddy_fn  = invite_str.split('!')[2];
  
  showInvite(buddy_id, buddy_un, buddy_fn);


}


function showInvite(buddy_id, buddy_un, buddy_fn) {
  
  ////g.growl('Loading your groups');
  
  Lightview.show({
    href: '/home/xhr_prof_invite.php',
    rel:  'ajax',
    title: 'Invite ' + buddy_un + ' to your groups!',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          buddy_id : buddy_id, 
          buddy_un : buddy_un, 
          buddy_fn : buddy_fn
        }, 
        onComplete: function(){
          $('profile_send_inv').observe('submit', submitInviteForm).focusFirstElement();
        }
      }
    }
  });
}


function submitInviteForm(event) {

  
  //alert($('profile_send_inv').serialize());


  
  Event.stop(event);
    
  Lightview.show({
    href: '/home/xhr_prof_invite.php',
    rel:  'ajax',
    options: {
      title:    'results',
      menubar:  false,
      topclose: false,
      autosize: true,
      ajax: {
        parameters: Form.serialize('profile_send_inv')
      }
    }
  });
}




/*

unrelated...

*/
function processInvite(buddy_id, buddy_un, buddy_fn) {

  //alert(buddy_id + ' ' + buddy_un);
  var postArgs  = 'buddy_id=' + buddy_id;
  var remove_el = 'bud_'      + buddy_id;
  
  new Ajax.Request(
    '/includes/xhr_buddy_delete.php', 
    {
      method: 'post', 
      postBody: postArgs,
      onComplete: function (transport) {
        
        if (transport.responseText == 'success') {
          Lightview.hide();
          
          $(remove_el).remove();
          
        }
        else {
          Lightview.hide();
          //alert(transport.responseText);      
        }   
      }
    }
  );
}














function extractRejectBuddy(e) {

  var reject_str    = Event.element(e).getAttribute('reject');
  
  
  if ( reject_str == 'undefined' || reject_str == '' ) {
    var icon_el   = _e.down();
    var reject_str  = icon_el.getAttribute('reject');
  }
  
  var buddy_id  = reject_str.split('!')[0];
  var buddy_un  = reject_str.split('!')[1];
  var buddy_fn  = reject_str.split('!')[2];
  
  
 //////////////console.log(reject_str);
  
  
  showReject(buddy_id, buddy_un, buddy_fn);


}


function showReject(buddy_id, buddy_un, buddy_fn) {

  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : 'Deny buddy request from: ' + buddy_fn + ' (' + buddy_un + ') ?',
          title:  'Deny Request'
        }, 
        onComplete: function(){
          $('alert_ok').observe('click', function () {
            processReject(buddy_id, buddy_un, buddy_fn);
          }).focus();
        }
      }
    }
  });
}


function processReject(buddy_id, buddy_un, buddy_fn) {

  //alert(buddy_id + ' ' + buddy_un);
  var postArgs  = 'buddy_id=' + buddy_id;
  var remove_el = 'bud_'      + buddy_id;
  
  new Ajax.Request(
    '/includes/xhr_buddy_delete.php', 
    {
      method: 'post', 
      postBody: postArgs,
      onComplete: function (transport) {
        
        if (transport.responseText == 'success') {
          Lightview.hide();
          
          $(remove_el).remove();
          
        }
        else {
          alert(transport.responseText);      
        }   
      }
    }
  );
}


function extractConfirmBuddy(e) {

  var confirm_str   = Event.element(e).getAttribute('confirm');
  
  
  if ( confirm_str == 'undefined' || confirm_str == '' ) {
    var icon_el   = _e.down();
    var confirm_str = icon_el.getAttribute('confirm');
  }
  
  var buddy_id  = confirm_str.split('!')[0];
  var buddy_un  = confirm_str.split('!')[1];
  var buddy_fn  = confirm_str.split('!')[2];  
  
  
  showConfirmBuddy(buddy_id, buddy_un, buddy_fn);


}


function showConfirmBuddy(buddy_id, buddy_un, buddy_fn) {

  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    title: 'Confirm',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : 'Add ' + buddy_fn + ' (' + buddy_un + ') to buddies ?',
          title:  'Confirm'
        }, 
        onComplete: function(){
          $('alert_ok').observe('click', function () {
            processConfirm(buddy_id, buddy_un, buddy_fn);
          }).focus();
        }
      }
    }
  });
}


function processConfirm(buddy_id, buddy_un, buddy_fn) {

  var postArgs  = 'buddy_id=' + buddy_id;
  var remove_el = 'bud_'      + buddy_id;
  
  
  new Ajax.Request(
    '/includes/xhr_buddy_confirm.php', 
    {
      method: 'post', 
      postBody: postArgs,
      onComplete: function (transport) {
        
        if (transport.responseText == 'success') {
          Lightview.hide();
          
          $(remove_el).remove();
          
          checkForBuddies();
          
        }
        else {
          alert(transport.responseText);      
        }   
      }
    }
  );
}











function extractRequestBuddy(e) {

  var request_str   = Event.element(e).getAttribute('request');
  
  
  if ( request_str == 'undefined' || request_str == '' ) {
    var icon_el   = _e.down();
    var request_str = icon_el.getAttribute('request');
  }
  
  var buddy_id  = request_str.split('!')[0];
  var buddy_un  = request_str.split('!')[1];
  var buddy_fn  = request_str.split('!')[2];
  
  
  showRequest(buddy_id, buddy_un, buddy_fn);


}


function showRequest(buddy_id, buddy_un, buddy_fn)  {

  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    title: 'Send Request',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : 'Send buddy request to ' + buddy_fn + ' ' + buddy_un + ' ?',
          title:  'Confirm'
        }, 
        onComplete: function(){
          $('alert_ok').observe('click', function () {
            processRequest(buddy_id, buddy_un, buddy_fn);
          }).focus();
        }
      }
    }
  });
}


function processRequest(buddy_id, buddy_un, buddy_fn) {

  //alert(buddy_id + ' ' + buddy_un);
  var postArgs  = 'buddy_id=' + buddy_id;
  
  new Ajax.Request(
    '/includes/xhr_buddy_request.php', 
    {
      method: 'post', 
      postBody: postArgs,
      onComplete: function (transport) {
        
        if (transport.responseText == 'success') {
          Lightview.hide();
        }
        else {
          alert(transport.responseText);      
        }   
      }
    }
  );
}







var recipient_arr = new Array();


function extractDeleteBuddy(e) {
  
  var delete_str    = Event.element(e).getAttribute('delete');
  
  
  if ( delete_str == 'undefined' || delete_str == '' ) {
    var icon_el   = _e.down();
    var delete_str  = icon_el.getAttribute('delete');
  }
  
  var buddy_id  = delete_str.split('!')[0];
  var buddy_un  = delete_str.split('!')[1];
  var buddy_fn  = delete_str.split('!')[2];
  
  showConfirm(buddy_id, buddy_un, buddy_fn);
}

/*

, 
        onComplete: function(){
          $('alert_ok').observe('click', processDelete);
        }
*/        

function showConfirm(buddy_id, buddy_un, buddy_fn)  {

  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    title: 'Remove?',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : 'Are you sure you want to remove ' + buddy_fn + ' (' + buddy_un + ') from your buddies?'
        }, 
        onComplete: function(){
          $('alert_ok').observe('click', function () {
            processDelete(buddy_id, buddy_un, buddy_fn) ;
          }).focus();
        }

      }
    }
  });


}



function processDelete(buddy_id, buddy_un, buddy_fn) {

  //alert(buddy_id + ' ' + buddy_un);
  var postArgs  = 'buddy_id=' + buddy_id;
  var remove_id = 'bud_' + buddy_id;
  
  
  new Ajax.Request(
    '/includes/xhr_buddy_delete.php', 
    {
      method: 'post', 
      postBody: postArgs,
      onComplete: function (transport) {
        
        if (transport.responseText == 'success') {
          
          Lightview.hide();
          
          
          $(remove_id).remove();
          
          checkForBuddies();
        
        }
        else {
          Lightview.hide();       
        }   
      }
    }
  );
}



function showSelectableUsers(input_val) {
  
  if ( $('select_users') ) {
    $('select_users').remove();
    
    recipObj  = {};
  }
  
  
  
  
  new Ajax.Request(
    '/home/xhr_prof_select_users.php', 
    {
      method: 'get',
      parameters: {
        query : input_val       
      }, 
      onComplete: function (transport) {
        
        
        var lv_h  = $('lightview').getHeight() - 25;
        
        //////////////console.log(lv_h);
        var json_arr  = transport.responseText.evalJSON();
  
        var select_users = new Element(
            'div', {
              className:'content   span-8',
              id:       'select_users',
              style:    'width:200px;height:'+lv_h+'px;border:0px;overflow:auto;z-index:999999999;position:fixed;top:'+($('lightview').cumulativeOffset().top + 5)+'px;margin:0 0 0 -238px;background: #fff;'//cursor:pointer;margin:0 0 0 -240px; width:230px;height:75px;//margin:-460px 0 0 -240px;
            }
        );
        //'style':    'width:200px;height:400px;overflow:auto;z-index:999999999;position:absolute;margin:-480px 0 0 -240px;cursor:pointer;background: #fff;'//margin:0 0 0 -240px; width:230px;height:75px;
        
        var ul  = new Element(
            'ul', {
              className : 'list'              
            }
        );
          
        ul.addClassName('list_has_hover');

        json_arr.each( function (json) {
          
          
          var li  = 
              new Element(
              'li', {
                id    : 'id_' + json.bud_id
              }).insert(
              
                new Element( 'a', { 
                  href        : 'javascript:;',
                  'recip_id'  : json.bud_id,
                  'recip_name': json.bud_name
                }).insert( new Element( 'img', {
                            id    : 'addr_' + json.bud_id,
                            style : 'vertical-align: middle',
                            src   : '/img/icons/add-adress-card.gif' }) 
                ).insert(' ' + json.bud_name).observe('click', populateRecipientBox)
              
              ).observe('click', function () {
                
                //////////////console.log('address clicked');
              });
          
          li.setAttribute('recip_id',   json.bud_id);
          li.setAttribute('recip_name', json.bud_name);
              
          ul.insert(li);
          
        });
        
        
        select_users.insert(ul);
        
        
        
        
        $('lightview').appendChild(select_users);
          
      }
    }
  );
  
  
  
  $('privmsg_to').focus();
}

var hasIndex  = false;
var recipObj  = recipObj || {};
var inputObj;

function populateRecipientBox(e) {
  
  var _e  = Event.element(e);
  var recip       = $(_e).up('li');//Event.element(e);
  var rec_id      = recip.getAttribute('recip_id');
  var rec_name    = recip.getAttribute('recip_name').split('@')[0];
  
  if ( !recipObj[ rec_id ] ) {
    recipObj[ rec_id ]  = rec_name;
    recip.addClassName('active_tab'); 
    

    if ( $('addr_' + rec_id) ) {
      $('addr_' + rec_id)
        .setAttribute('src', '/img/icons/remove-adress-card.gif');
    }    
    if ( $('_addr_' + rec_id) ) {
      $('_addr_' + rec_id)
        .setAttribute('src', '/img/icons/remove-adress-card.gif');
    }        
    
  } else {
    delete recipObj[ rec_id ];
    recip.removeClassName('active_tab');
    
    if ( $('addr_' + rec_id) ) {
      $('addr_' + rec_id)
        .setAttribute('src', '/img/icons/add-adress-card.gif');    
    }
    if ( $('_addr_' + rec_id) ) {
      $('_addr_' + rec_id)
        .setAttribute('src', '/img/icons/add-adress-card.gif');    
    }      
  }
  
  injectRecipient(rec_id, rec_name);

  
}

function injectRecipient(rec_id, rec_name) {
  
  
  var send_to     = [];
  
  for ( var prop in recipObj )
    send_to.push( recipObj[prop] );

  inputObj  = $('li_privmsg_id');
  
  $('ul_privmsg_to').childElements().invoke('remove');
  
  var _recTmp = [];
  
  for( var t in recipObj ) {
    _recTmp.push( { 
      rec_id: t,
      rec_name: recipObj[t]
    } );
  }
  ////////console.log(recipObj);
  
  
  
  
  _recTmp.each(function (_st) {
    
    var li  = new Element('li', { alt: 'Click to remove' }).insert(
                  new Element( 'a', { 
                    href        : 'javascript:;',
                    style: 'padding-right:5px'
                  }).insert( new Element( 'img', {
                              id    : '_addr_' + _st.rec_id,
                              style : 'vertical-align: middle',
                              src   : '/img/icons/remove-adress-card.gif' }) 
                  ).insert(' ' + _st.rec_name).observe('click', populateRecipientBox)                
                
                );

    li.setAttribute('recip_id',   _st.rec_id);
    li.setAttribute('recip_name', _st.rec_name);

    
    $('ul_privmsg_to')
      .insert(li);
  });
  $('ul_privmsg_to')
      .insert(inputObj);
  
  
  
  $('privmsg_to').value='';
  if ( hasIndex ) {
    $('privmsg_to').focus();
  }    
  
  if ( $('selectable_recipients') ) {
    $('selectable_recipients').remove();
  }

}

var _addressbook = {};

function setAddressbook(jxhr) {
  _addressbook = jxhr;
}

if ( _user.session_logged_in ) {

  (function () {
    new Ajax.Request(
      '/home/xhr_prof_select_users.php', 
      {
        method: 'get',
        onComplete: function (xhr) {
          var json_arr  = xhr.responseText.evalJSON();
          setAddressbook(json_arr);
        }        
      }
    );
  })();
}


function draw_selectable_recipients(_s, _atIndex) {
  
  
  
  if ( $('selectable_recipients') ) {
    $('selectable_recipients').remove();  
  }
  
  //if ( $F('privmsg_to').indexOf(',') >= 0 || $F('privmsg_to').indexOf(' ') >= 0 ) {
  
  
  if ( $F('privmsg_to').indexOf(',') >= 0 || _atIndex ) {
  
    if ( _atIndex ) {
      var 
        _recip    = $F('privmsg_to'), 
        hasIndex  = true;
    } else {
      var 
        _index  = $F('privmsg_to').indexOf(','), 
        _recip  = $F('privmsg_to').substring(0, _index);
    }
    
    
    
    _s  = [{ 
      rec_id: _recip, 
      rec_name: _recip 
    }];    
    
    ////////console.log('value to set: ' + _value);
    ////////console.log('length' + _value.length);
    //$('privmsg_to').value = ''.toString();
    
    $('privmsg_to').value='';
    
    if ( _recip.length > 0 ) {
      recipObj[_recip] = _recip;
      injectRecipient(_recip, _recip);
    }    
    return;
  }
  
  if ( _s.length === 0 ) {
    _s  = [{ 
      bud_id: $F('privmsg_to'), 
      bud_name: $F('privmsg_to') 
    }];
  }
  
  var ul  = new Element('UL', { 
    className: 'list list_has_hover content', 
    id: 'selectable_recipients',
    style: 'z-index:9999999;position:absolute;width:' + $('ul_privmsg_to').getWidth() + 'px;margin-top: ' + $('ul_privmsg_to').getHeight + 'px'
  });
  
  _s.each(function (su) {
    
    var li  = new Element('LI');
    var a   = new Element('A', { href: 'javascript:;' } )
    
    
    var li  = 
        new Element(
        'li', {
          id    : '_id_' + su.bud_id
        }).insert(
          new Element( 'a', { 
            href : 'javascript:;'
          }).insert( new Element( 'img', {
                      id    : '_addr_' + su.bud_id,
                      style : 'vertical-align: middle',
                      src   : '/img/icons/add-adress-card.gif' }) 
          ).insert(' ' + su.bud_name).observe('click', populateRecipientBox)

        );

    li.setAttribute('recip_id',   su.bud_id);
    li.setAttribute('recip_name', su.bud_name);

    ul.insert(li);    
  });
  
  $('wrap_sendto_ul').update(ul);
}



function check_selectable_recipients(obj, _atIndex) {
  
  
  
  var _selectable = [], 
      _val        = obj.value.toLowerCase().trim();
  
  if ( _val != '' && _val != 'null' ) {
    _addressbook.each(function (_a, i) {  
      var _bud  = _a.bud_name;

      if (  _bud.toLowerCase().indexOf(_val) >= 0  ) {
        _selectable.push(_a);
      }
    });
    draw_selectable_recipients(_selectable, _atIndex);
  }    
}





function checkTextarea(input_val) {


  return true;


}


/*
  PROFILE: SEND MESSAGE
*/

function showSendMessageFormFromIcon(event) {
  
  //////////console.log(event);
  
  
  var _e  = Event.element(event);
  
  var sendto    = _e.getAttribute('sendto'), 
      titleto   = _e.getAttribute('sendto').replace('(', '').replace(')', '').replace('@', ' (') + ')';
  
  if ( sendto == 'undefined' || sendto == '' ) {
    var icon_el   = _e.down();
    var sendto    = icon_el.getAttribute('sendto');
  }
  
  ////g.growl(sendto);
  //alert('attribute "sendto": ' + _e.sendto);
  
  ////////////console.log(titleto);
  
  
  
  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_send_message.php',
    rel:  'ajax',
    title: 'Send Message To ' + titleto , 
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          send_to : sendto
        },
        onComplete: function(){
          $('profile_send_msg_form').observe('submit', submitSendMessageForm);
        }
      }
    }
  });
}


function showSendMessageForm(event) {

  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_send_message.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        onComplete: function(){
          $('profile_send_msg_form').observe('submit', submitSendMessageForm);
           showSelectableUsers.delay(2);
        }
      }
    }
  });
}

function showSendMessageFormInbox(event) {

  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_send_message.php?at=inbox',
    rel:  'ajax',
    title: 'Compose New Message',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        onComplete: function(){
          $('profile_send_msg_form').observe('submit', submitSendMessageForm);
           showSelectableUsers.delay(2);
        }
      }
    }
  });
}

function submitSendMessageForm(event) {
  
  if ( $('select_users') ) {
    $('select_users').remove();
  }
  
  ////////console.log(recipObj);
  
  var recStr = '&recip=';
  var sendTo = '';
  
  for ( var _r in recipObj ) {
    recStr += _r + '|';
  }
  
  for ( var _r in recipObj ) {
    sendTo += recipObj[_r] + ',';
  }
    
  
  $('privmsg_to').value = sendTo;
  
  
  Event.stop(event);
    
  Lightview.show({
    href: '/home/xhr_prof_send_message.php',
    rel:  'ajax',
    options: {
      title:    'results',
      menubar:  false,
      topclose: false,
      autosize: true,
      ajax: {
        method: 'post',
        postBody: $('profile_send_msg_form').serialize() + recStr
        
      }
    }
  });
}


function showAskQuestionForm() {
  
  Lightview.show({
    href: '/includes/xhr_answers_ask_question_form.php',
    rel:  'ajax',
    title: 'Ask a Question',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        onComplete: function(){
          $('ask_question_short').focus();
          $('form-answers_ask_question').observe('submit', processAskQuestion);
        }
      }
    }
  });  
}


function processAskQuestion(event) {
  
  Event.stop(event);

  Lightview.show({
    href: '/includes/xhr_answers_ask_question_form.php',
    rel:  'ajax',
    title: 'Ask a Question',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'post',
        postBody: $('form-answers_ask_question').serialize(),
        onComplete: function(){
          //$('ask_question_short').focus();
          //$('form-answers_ask_question').observe('submit', processAskQuestion);
        }
      }
    }
  });  
  ////console.log(event);
  ////console.log($('form-answers_ask_question').getInputs());
  ////console.log($('form-answers_ask_question').serialize());
}






/*
  PROFILE: SEND EMAIL
*/

function showSendEmailFormFromIcon(event) {
  
  var _e  = Event.element(event);
  
  var sendto    = _e.getAttribute('sendto');
  
  if ( sendto == 'undefined' || sendto == '' ) {
    var icon_el   = _e.down();
    var sendto    = icon_el.getAttribute('sendto');
  }
  
  ////g.growl(sendto);
  //alert('attribute "sendto": ' + _e.sendto);
  
  
  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_send_email.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          send_to : sendto
        },
        onComplete: function(){
          $('privmsg_subject').value  = document.title;
          $('profile_send_msg_form').observe('submit', submitSendEmailForm);
        }
      }
    }
  });
}


function showSendEmailForm(event) {

  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_send_email.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        onComplete: function(){
          $('profile_send_msg_form').observe('submit', submitSendEmailForm);
        }
      }
    }
  });
}

function submitSendEmailForm(event) {
  
  if ( $('select_users') ) {
    $('select_users').remove();
  }
  
  Event.stop(event);
    
  Lightview.show({
    href: '/home/xhr_prof_send_email.php',
    rel:  'ajax',
    options: {
      title:    'results',
      menubar:  false,
      topclose: false,
      autosize: true,
      ajax: {
        method: 'post',
        postBody: $('profile_send_msg_form').serialize()
        
      }
    }
  });
}




/*
  PROFILE: SEND INVITE TO GROUP
*/
function showInviteForm(event) {
  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_invite.php',
    rel:  'ajax',
    title: 'Invite to a group',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        onComplete: function(){
          $('profile_send_inv').observe('submit', submitInviteForm);
        }
      }
    }
  });
}
/*
function submitInviteForm(event) {

  Event.stop(event);
    
  Lightview.show({
    href: '/home/xhr_prof_invite.php',
    rel:  'ajax',
    options: {
      title:    'results',
      menubar:  false,
      topclose: false,
      autosize: true,
      ajax: {
        parameters: Form.serialize('profile_send_inv')
      }
    }
  });
}

*/

/*
  PROFILE: SEND BUDDY REQUEST
*/
function showRequestForm(event) {
  Event.stop(event);
  Lightview.show({
    href: '/home/xhr_prof_request.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        onComplete: function(){
          $('profile_send_req').observe('submit', submitRequestForm);
        }
      }
    }
  });
}

function submitRequestForm(event) {

  Event.stop(event);
    
  Lightview.show({
    href: '/home/xhr_prof_request.php',
    rel:  'ajax',
    options: {
      title:    'results',
      menubar:  false,
      topclose: false,
      autosize: true,
      ajax: {
        parameters: Form.serialize('profile_send_req')
      }
    }
  });
}


// type, xhr
function ConfirmFavorite(save_type, callback) {

  var default_callback  = "removeDialog";
  var alert_str         = "Save " + save_type + " to your favorites?";
  var title_str         = "Confirm";
  
  var callback          = !callback ? call_test : callback;
  
  
  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          title   : title_str,
          message : alert_str
        }, 
        onComplete: function(){
          
          $('alert_ok').focus();
          $('alert_ok').observe('click', function () {
            
            if ( callback() ) {
            
              removeDialog();
            }
            
          }).focus();
          
        }
      }
    }
  });
}


function call_test() {
  
  alert('callback test');

}


/*


  GLOBAL ALERT REPLACEmENT
  
  
  */
  
function AlertDialog(alert_str) {

  var default_callback  = "removeDialog";
  
  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    title: 'Alert',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : alert_str
        }, 
        onComplete: function(){
          
          $('alert_ok').focus();
          $('alert_ok').observe('click', removeDialog).focus();
          
        }
      }
    }
  });
}

function AlertReturnDialog(alert_str, return_to) {

  var default_callback  = "removeDialog";
  
  Lightview.show({
    href: '/includes/xhr_alert_dialog.php',
    rel:  'ajax',
    title:'Confirm',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : alert_str
        }, 
        onComplete: function(){
          
          $('alert_ok').focus();
          $('alert_ok').observe('click', function () {
            
            removeDialog();
            eval(return_to);
          
          }).focus();
          
        }
      }
    }
  });
}


function RedirectDialog(alert_str, redirect) {
  
  Lightview.show({
    href: '/includes/xhr_upgrade_dialog.php',
    rel:  'ajax',
    title: 'Confirm',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : alert_str
        }, 
        onComplete: function(){
          $('alert_ok').observe('click', function () {
            
            location.href= redirect; 
            
          }).focus();
        }
      }
    }
  });
}

function UpgradeDialog(upgrade_str) {
  
  Lightview.show({
    href: '/includes/xhr_upgrade_dialog.php',
    rel:  'ajax',
    title: 'Upgrade',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: {
          message : upgrade_str
        }, 
        onComplete: function(){
          $('alert_ok').observe('click', function () {
            
            location.href= '/upgrade/'; 
            
          }).focus();
        }
      }
    }
  });
}



function removeDialog() {
  
  Lightview.hide(); 
  
  return true;
} 



function CheckForm() {
  return true;
}





function addCategoryForm(cat_title, cat_section, cat_field)
{
  var post_args = 'section=' +cat_section + '&field=' + cat_field;

  Lightview.show({
    href: '/manage/xhr_cms_new_category_dialog.php',
    rel:  'ajax',
    options: {
      autosize: true,
      topclose: false,
      ajax: {
        method: 'get',
        parameters: { message : cat_title }, 
        onComplete: function(){
          $('new_category').observe('submit', function () {
            
            
            
            processNewCategory(post_args, $('new_category').serialize());
            
          });
          
          $('category_str').focus();
        }
      }
    }
  });
}

function processNewCategory(post_args, new_args)
{
  post_args = post_args + '&' + new_args;
  
  new Ajax.Request(
    '/manage/xhr_cms_create_category.php',
    {
      method: 'post',
      postBody: post_args,
      onComplete: function (xhr) {

        var jxhr  = xhr.responseText.evalJSON();
        
        if (  jxhr.response == 'success' ) {
          if ( jxhr.update_to && jxhr.update_id && jxhr.update_wt ) {
            if ( $(jxhr.update_to) ) {
              $(jxhr.update_to).options[$(jxhr.update_to).length-1] = new Option(jxhr.update_wt, jxhr.update_id);
              $(jxhr.update_to).options[$(jxhr.update_to).length] = new Option('--- Add New ---', 0);
              $(jxhr.update_to).value = jxhr.update_id;
            }
          }
          removeDialog();
        }
        else {
          $('role_message').update('Your category could not be created at this time.').addClassName('error');
        }
      }
    }
  );

}

/*
Event.observe(window, 'load', function () {
  $$('input', 'select', 'textarea').each( function (f, i) {
    if ( f.type !== 'hidden' )
      f.setAttribute('tabindex', i);
  });
});
*/

function is_within(e, handler) {
  return isMouseLeaveOrEnter(e, handler);
}

function isMouseLeaveOrEnter(e, handler) 
{ 
  if (e.type != 'mouseout' && e.type != 'mouseover') return false; 
  var reltg = e.relatedTarget ? e.relatedTarget : 
  e.type == 'mouseout' ? e.toElement : e.fromElement; 
  while (reltg && reltg != handler) reltg = reltg.parentNode; 
  return (reltg != handler); 
}

Element.addMethods({
  is_within: function (elem, evt) {
    return isMouseLeaveOrEnter(evt, elem);
  }
});





(function() {

  var QueryStr = {
    get: function() {
      var _q = location.search;
      if (_q.length > 1) {
        _q = _q.substr(1).split('&');
      } else {
        _q = [];
      }

      return _q;
    },

    toJSON: function () {
      var _o  = {}, _g = this.get();

      _g.each(function (g) {
        var _arr  = g.split('=');
        _o[_arr[0]] = _arr[1];
      });

      return _o;

    }
  };
  
  location.query = QueryStr.toJSON();
})();

