var accs   = [];
var thumbs = [];
var slides = [];
var ids = [];
var mtPic  = '';

window.addEvent('domready', 
  function()
  {
    // add shadows to any elements with 'apply-shadows' class.  also to rightside and optionpane elements.
    // addDropShadows();
    // set up constants
    initData();

    // set .rightside shadow-five div minimum height inside based on rightside height
    if ($$('.rightside').length == 1){
      $$('.rightside > * > * > * > .shadow-five')[0].setStyle('min-height', $$('.rightside')[0].clientHeight - 40);
      // move footer inside the rightside shadow-two element
      $$('.rightside > > .shadow-two')[0].appendChild($('footer'));    
      }
    else
    {
      // set footer top as outerWrapper plus header heights, or bottom of window 
      var pagetop = $('outerWrapper').getHeight() + $('header').getHeight();
      if (pagetop > $$('html')[0].getHeight())
        {$('footer').setStyle('top',pagetop);}
      else
        {$('footer').setStyle('position','fixed');
        $('footer').setStyle('bottom',0);
        }
    }
    // initialize accordions
    revealOptions();
    addAccordions();

    // initialize plus/minus buttons if ,plus_minus element image found and add resize event
    if ($$('.plus_minus').length > 0) {
      plusMinus();
      window.addEvent('resize', 
        function()
          {
          plusMinus();
          });}
          
    $$('.flyout-button').each(                 // put onclick event onto flyout_button divs
    function(DIV){ DIV.addEvent('click', function(event){clickFly(DIV);});} 
    );
  });

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function toggleView()
{
  var viewText = 
    ($('viewToggle').getText() == 'album view')? 'list view': 'album view';
  $('viewToggle').setText(viewText);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // called on DOM ready & on resize
function plusMinus(gal) {
  // if no gallery passed in, then find all galleries.  else just the one gallery
  if (gal) {galleries = [gal]} else {galleries   = $$(".thumb-group-container"); }
  
  // for each gallery, set overflow class if thumbs overflow one line
  galleries.each(
    function(GAL,i)
    {
      // if top position of last first is lower than top position of last thumb, then wrapping is happening so render plus/minus 
      gallery_thumbs = GAL.getElements('.gallery_thumb');
      if (gallery_thumbs[0].getCoordinates().top <  gallery_thumbs[gallery_thumbs.length - 1].getCoordinates().top)
        { if (!GAL.hasClass('overflow')) {GAL.addClass('overflow')} }
      else
        { if (GAL.hasClass('overflow')) {GAL.removeClass('overflow')} }
    });
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

function hideShowOverflow(node) {
  // loop up from button to thumb-group-container ancestor
  while(!$(node).hasClass('thumb-group-container')){node=$(node).getParent();}
  if (node.hasClass('show-all')) {node.removeClass('show-all')} else {node.addClass('show-all')}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function togglePhotos(container)                   // called from HTML on click
{ 
  var buttonDiv = $(container).getElement('div[class="thumb-group-name"]').getElement('img');
  var buttonImg = $(buttonDiv).src.replace('_rollover.png','_base.png');  
  $(container).toggleClass('show-all');
  if (buttonImg.indexOf('minus_base.png') > -1)
  {
    $(buttonDiv).src  = buttonImg.replace('minus_base.png','plus_base.png');
  }
  else
  {
    $(buttonDiv).src  = buttonImg.replace('plus_base.png','minus_base.png');
  }
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
function prevNext()                              // called on DOM-ready
{
  $('bigPhoto').addEvent('mouseenter',
    function()                                   // ...add event listener
    {
      $('slidePrevNext').setStyle('display','block');
    });
  $('bigPicture').addEvent('mouseleave',
    function()                                   // ...add event listener
    {
      $('slidePrevNext').setStyle('display','none');
    });
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// reply using the quickmail flyout (part of layouts/application.haml)
// set to name, subject, and body. 
function reply(prepend_subject, prepend_body) {
  if (!prepend_subject) {prepend_subject = ""};
  if (!prepend_body) {prepend_body = ""};
  if ($('MessageBodyFlyout')) {$('MessageBodyFlyout').setStyle('display', 'none')};
  subject =  prepend_subject + 'Re: ' + $('show_message_subject').get('text'); 
  body = prepend_body + '<br/><br/>'+'<div style="border-left:1px solid #CCCCCC; margin-left:10px; padding-left:5px">' +'---------- Reply to Message ----------<br/>'+'From: '+ $('show_msg_member').innerHTML+'<br/>'+'Date: '+ $('show_message_date').innerHTML+'<br/>Subject: '+$('show_message_subject').get('text')+'<br/>To: '+ ($('message_to_members') ? $('message_to_members').title : $('show_to_msg_member').innerHTML)+( $('message_cc_members') ? '<br/>cc:'+$('message_cc_members').title : "")+'<br/><br/>'+ $('show_message_body').innerHTML+'<br/><br/>'+ $('attachment_list').innerHTML+'</div>';
  quick_mail($('show_msg_member').get('text'),null,subject,body,$('msg_from_contact_card_id').innerHTML);
}
// forward using the compose mail flyout (part of messages/index.haml)
// set subject, and body. 
function forward() {
  $('MessageBodyFlyout').setStyle('display', 'none'); 
  subject = 'FWD: ' + $('show_message_subject').get('text'); 
  body = '<br/><br/>'+'<div style="border-left:1px solid #CCCCCC; margin-left:10px; padding-left:5px">' +'---------- Forwarded Message ----------<br/>'+'From: '+ $('show_msg_member').innerHTML+'<br/>'+'Date: '+ $('show_message_date').innerHTML+'<br/>Subject: '+$('show_message_subject').get('text')+'<br/>To: '+ ($('message_to_members') ? $('message_to_members').title : $('show_to_msg_member').innerHTML)+( $('message_cc_members') ? '<br/>cc:'+$('message_cc_members').title : "")+'<br/><br/>'+ $('show_message_body').innerHTML+'<br/><br/>'+ $('attachment_list').innerHTML+'</div>';
  quick_mail('',null,subject,body);
}
// opens compose message flyout and initializes
function quick_mail(member_name, member_id, subject, body, contact_card_id) {
  if (!member_name) {member_name = ""};
	if (!member_id) {member_id = ""};
  if (!subject) {subject = ""};
  if (!body) {body = ""};
  if (!contact_card_id) {contact_card_id = ""};

  if ($('compose_message')) {
	
  	$('compose_subject').value= subject;
   	$('to_member_autocomplete').value = member_name;
    $('message_to_contact_card_id').value = contact_card_id;
    // $('message_file_datas').value = ""
    // reset_attachments();
    zipFly();
    $('new_message_1').setStyle('left',0);
    $('new_message_1').setStyle('display','block');
    currFly = 'new_message_1';
  
  	if ($('compose_body')) {$('compose_body').value= body;}
  	if (!$('compose_body_parent')) {initEditor()}
	
  	if ($('compose_body_parent') && tinyMCE.get('compose_body')) {tinyMCE.get('compose_body').setContent(body)};
  }
  else
  {
    new Request({evalScripts:true, method:'get', onComplete:function(request){quick_mail(member_name, member_id, subject, body, contact_card_id);}, url:'/messages/new'}).send();
    // new Request({url: '/messages/new', method: 'get', loaded: callback, evalScripts: true}).send();  
  }
}


function invite_group_message(group_name, group_id) {
  var compose_type  = new Element('input', {id: 'compose_type',name: 'compose_type', type: 'hidden', value: 'GroupInvitation'});
  var group_id  = new Element('input', {id: 'message_group_id',name: 'message[group_id]', type: 'hidden', value: group_id});
  quick_mail('','','Invitation to join '+group_name,$("group_thumb").innerHTML+"<br />"+$("group_synopsis").innerHTML,'')+"</table>"
  compose_type.inject($('compose_message_form'),'top')
  group_id.inject($('compose_message_form'),'top')
}

function reset_attachments() {
  // first set the attachment list to blank
  $$('#compose_message .multiupload .list')[0].innerHTML = '';
  // reset first file input element
  $$('#compose_message .multiupload input')[0].value = '';
  // then remove all input elements after the first one
  len = $$('#compose_message .multiupload input').length
  if (len > 1) {
    parent = $$('#compose_message .multiupload')[0];
    for(var i = 1; i < len; i++)
    { 
      node = $$('#compose_message .multiupload input')[i];
      parent.removeChild(node);
    }
  }
}
	
function replyToAll(received) {
	from_member=$('show_msg_member').get('text');
	to_member=$('show_to_msg_member').get('text');
	current_member= received ? to_member : from_member;
	subject =  'Re: ' + $('show_message_subject').get('text'); 
  body = '<br/><br/>'+'<div style="border-left:1px solid #CCCCCC; margin-left:10px; padding-left:5px">' +'---------- '+ (received ? "Reply to" : "Forwarded")+' Message ----------<br/>'+'From: '+ $('show_msg_member').innerHTML+'<br/>'+'Date: '+ $('show_message_date').innerHTML+'<br/>Subject: '+$('show_message_subject').get('text')+'<br/>To: '+ ($('message_to_members') ? $('message_to_members').title : $('show_to_msg_member').innerHTML)+( $('message_cc_members') ? '<br/>cc:'+$('message_cc_members').title : "")+'<br/><br/>'+ $('show_message_body').innerHTML+'<br/><br/>'+ $('attachment_list').innerHTML+'</div>';
	to_recepients=$('message_to_members').title;
	if ($('message_cc_members')) {
  	cc_recepients = $('message_cc_members').title;
  	recepients=from_member+', '+to_recepients+', '+cc_recepients;
	}
  else {
  	cc_recepients = '';
		recepients=from_member+', '+to_recepients;
  }
	recepients=(recepients.replace(", "+current_member,""));
	while (recepients != recepients.replace(', ' + current_member, '')) {
  	recepients = recepients.replace(', ' + current_member, '');
  }
	recepients=recepients.replace(current_member+', ',"");	
	quick_mail(recepients,null,subject,body,$('msg_from_contact_card_id').innerHTML);
}

// check captcha and submit
function check_message(form) {
  if ($(form).getElement('input.random') && 
    $(form).getElement('input.random').value != (parseInt($(form).getElement('input.salt').value * 6/7) + ''))
    { alert('please prove you are not a spam-bot by entering the random value');
      return false;
    }

  return true;
}

// to initialize TinyMCE editors
function initEditor() {
	tinyMCE.init({
		  editor_selector : 'mceEditor',
		  mode : 'textareas',
		  plugins : 'emotions',
		  inline_styles : false,
		  forced_root_block : false,
      force_p_newlines : false,
		  relative_urls : false,
		  convert_urls : false,
		  remove_script_host : false,
		  theme : 'advanced',
		  theme_advanced_buttons1_add : 'indent,outdent,fontselect,fontsizeselect,forecolor,link,unlink,image,bullist,hr,emotions,help,undo',
		  theme_advanced_buttons2 : '',
		  theme_advanced_buttons3 : '',
		  theme_advanced_disable : 'styleselect,strikethrough,justifyfull,redo,cleanup,removeformat,sub,sup,visualaid, numlist, anchor,charmap,code,backcolor',
		  theme_advanced_toolbar_location : 'top'
		  });  
}


// to initialize TinyMCE editors
function initAdvancedEditor() {
	tinyMCE.init({
		  editor_selector : 'mceEditor',
		  mode : 'textareas',
		  plugins : 'emotions',
		  inline_styles : false,
		  forced_root_block : false,
      force_p_newlines : false,
		  relative_urls : false,
		  convert_urls : false,
		  remove_script_host : false,
		  theme : 'advanced',
		  theme_advanced_buttons1_add : 'indent,outdent,fontselect,fontsizeselect,forecolor,link,unlink,image,bullist,hr,emotions,help,undo,code',
		  theme_advanced_buttons2 : '',
		  theme_advanced_buttons3 : '',
		  theme_advanced_disable : 'styleselect,strikethrough,justifyfull,redo,cleanup,removeformat,sub,sup,visualaid, numlist, anchor,charmap,backcolor',
		  theme_advanced_toolbar_location : 'top'
		  });  
}

function hideshowTemplate(element, id) {
  if (element.get('text').indexOf('more') > 0) {
    if ($('template_' + id + '_subject')) {$('template_' + id + '_subject').setStyle('display','block');}
    if ($('template_' + id + '_body')) {$('template_' + id + '_body').setStyle('display','block');}
    element.set('text', '-less');
  }
  else {
    if ($('template_' + id + '_subject')) {$('template_' + id + '_subject').setStyle('display','none');}
    if ($('template_' + id + '_body')) {$('template_' + id + '_body').setStyle('display','none');} 
    element.set('text', '+more');
  }
}

function noenter(event) {
  if (window.event) {
    return !(event.keyCode == 13);
  }
  else
  {
    return !(event.which == 13);
  }
}

function addZeroes(inputNum, desiredPrecision){
 // first round to deimal precision
 inputNum = Math.round(inputNum * Math.pow(10,desiredPrecision)) / Math.pow(10,desiredPrecision); 
 var numString = inputNum + "";
 if (numString.split('.')[1])
  { var afterDecimalString = numString.split('.')[1];
    while (afterDecimalString.length < desiredPrecision) {afterDecimalString += "0"};
    numString = numString.split('.')[0] + '.' + afterDecimalString
  }
 if (numString == '00') {numString = '0'}
 return(numString);
}
