/* this files contains javascript used 
   exclusively by the site public pages */

window.addEvent('domready', function() {

  /* IE v6 PNG Fix */
  /*****************/

  if ((Browser.Engine.trident) && (Browser.Engine.version == 4))
  {
    $$('img.tutr-png').each(function(item, index) {
        item.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+item.src+"', sizing='scale')";
        item.src = 'images/itm__blank.gif';
      });
  }
  
  /* FYT Controls */
  /****************/
  
  var f = tutr__fyt_form = $('tutr-find-your-tutr-form');  
  if (f) 
  {
    // assign the form elements to their global references
    tutr__fyt_input_subject = f.getElement('input.subject');
    tutr__fyt_input_subject_txt = f.getElement('input.subject_txt');
    tutr__fyt_input_teacher = f.getElement('input.teacher');
    tutr__fyt_input_teacher_txt = f.getElement('input.teacher_txt');
    tutr__fyt_input_area = f.getElement('input.area');
    tutr__fyt_input_area_txt = f.getElement('input.area_txt');
    
    // any click outside of the menus closes them
    $(document.body).addEvent('click', function(e) {
      e = new Event(e);
      var el = $(e.target);
      if (!el.getParent('#tutr-find-your-tutr-form')) { 
        tutr__fyt_deselect();
        tutr__fyt_close();
      }
    });
    
    // clicking the go button will
    // submit the tutor search form 
    var g = f.getElement('a.go');
    g.addEvent('click', function(e) {
      e = new Event(e).stop();
      tutr__fyt_form.submit();
    });
  }
  
  /* Subjects Drop-Down Menu */
  /***************************/
  
  var el = $('tutr-subject-ddm');
  if (el) 
  {
    // initialize the global drop down element references 
    var s = tutr__subject_ddm_selector = el.getElement('div.selector');
    var o = tutr__subject_ddm_options = el.getElement('ul.options'); 
    tutr__subject_ddm_scrollbar = el.getElement('div.scrollbar');
            
    // handle clicks on the selector
    s.addEvent('click', function(e) {
      e = new Event(e);
      var o = tutr__subject_ddm_options;
      var hidden = o.hasClass('tutr-hidden');
      
      // close all menus
      tutr__fyt_close();
      
      // open if
      // necessary
      if (hidden)
      {
        // open the area menu
        tutr__fyt_open('subjects');
      }      
    });
    
    // add handlers to each main subject option in menu
    o.getElements('li').addEvent('click', function(e) {
      
      // determine teacher id
      // set the select text
      var mid = this.get('id');
      var arr = mid.split('_');
      mid = parseInt(arr[1]);
      tutr__fyt_input_subject.value = mid ? 'M-'+mid : '0';
      tutr__fyt_input_subject_txt.value = this.get('text');
      tutr__subject_ddm_selector.set('text', this.get('text'));
      
      // then just close
      tutr__fyt_close();
    });

    // add mouse enter handlers to show the proper flyouts
    o.getElements('li').addEvent('mouseenter', function(e) {
      e = new Event(e);
    
      // extract the integer id of the
      // subject so we can locate the
      // appropriate flyout element
      var mid = this.get('id');
      var arr = mid.split('_');
      mid = parseInt(arr[1]);
      if (!mid) 
      {
        // for the special wildcard
        // just deselect everything
        tutr__fyt_deselect();
        return;
      }
      var flyout = $('tutr-fyt-subjects_'+mid);
      var control = flyout.getParent();
    
      // close flyout and deselect any subject that is already open
      if (tutr__area_ddm_open_county != this) tutr__fyt_deselect();
    
      // the flyout has no size while it is hidden
      // so we must make it visible before calculating
      flyout.removeClass('tutr-hidden');
    
      // locate the aboslute position of control element within the document        
      var absoluteContainerOffset = control.getPosition($(document.body));
        
      // locate the absolute position of the subject li too
      var absoluteOffset = this.getPosition($(document.body))
    
      // now determine where relative to the window the subject li
      // is currently located and how big the window is at present
      var subjectRelativeY = absoluteOffset.y - window.getScroll().y;
      var availableY = window.getSize().y;
    
      // determine if we have enough space to open the flyout
      // with its top aligned at the subject li position on page
      if ((subjectRelativeY + flyout.getSize().y) > availableY)
      {
        // calculate the absolute position of the flyout relative to the body by subtractiing
        // the space it requires from the available window height and adding to current scroll
        // under no circumstances should the top of the flyout be above the top of the window
        var absoluteFlyoutY = window.getScroll().y + (window.getSize().y - flyout.getSize().y);
        if (absoluteFlyoutY < window.getScroll().y) absoluteFlyoutY = window.getScroll().y;
      }
      else
      {
        // we had enough space so just position 
        // relative to the subject li element 
        var absoluteFlyoutY = absoluteOffset.y-2;
      }
    
      // now adjust the real position of the flyout element based on the calculations we just performed
      flyout.setStyles({top: absoluteFlyoutY - absoluteContainerOffset.y, left: this.getSize().x+2});
      
      // indicate the subject
      // is now selected and open
      this.addClass('selected');
    
      // take note of the flyout and
      // subject that has been opened
      tutr__subject_ddm_open_subject = this;
      tutr__subject_ddm_open_flyout = flyout;
    });
    
    el.getElements('ul.flyout li').addEvent('click', function(e) {
      
      // determine subject id
      // set the select text
      var sid = this.get('id');
      var arr = sid.split('_');
      sid = parseInt(arr[1]);
      tutr__fyt_input_subject.value = 'S-'+sid;
      tutr__fyt_input_subject_txt.value = this.get('text');
      tutr__subject_ddm_selector.set('text', this.get('text'));
      
      // then just close
      tutr__fyt_close();
    });
  }
  
  /* Teacher Drop-Down Menu */
  /**************************/
  
  var el = $('tutr-teacher-ddm');
  if (el) 
  {
    // initialize the global drop down element references 
    var s = tutr__teacher_ddm_selector = el.getElement('div.selector');
    var o = tutr__teacher_ddm_options = el.getElement('ul.options'); 
    tutr__teacher_ddm_scrollbar = el.getElement('div.scrollbar');
            
    // handle clicks on the selector
    s.addEvent('click', function(e) {
      e = new Event(e);
      var o = tutr__teacher_ddm_options;      
      var hidden = o.hasClass('tutr-hidden');
      
      // close all menus
      tutr__fyt_close();
      
      // open if
      // necessary
      if (hidden)
      {
        // open the teacher menu
        tutr__fyt_open('teachers');
      }      
    });
    
    // more efficiently track li clicks
    // by analyzing the container events
    o.addEvent('click', function(e) {
      e = new Event(e);
      var target = $(e.target);   
      if (target.get('tag') != 'li') return;
      
      // determine teacher id
      // set the select text
      var tid = target.get('id');
      var arr = tid.split('_');
      tid = parseInt(arr[1]);
      tutr__fyt_input_teacher.value = tid;
      tutr__fyt_input_teacher_txt.value = target.get('text');
      tutr__teacher_ddm_selector.set('text', target.get('text'));
      
      // then just close
      tutr__fyt_close();      
    });

    // now and handlers for the scroll up and down buttons with movement
    // which will adjust the display up and down exactly one teacher row    
    el.getElement('div.scrollbar div.up').addEvent('click', function(e) {
      var s = tutr__teacher_ddm_slider;
      s.set(s.step - 21);
    });
    el.getElement('div.scrollbar div.down').addEvent('click', function(e) {
      var s = tutr__teacher_ddm_slider;
      s.set(s.step + 21);
    });
  }
 
  /* Area Drop-Down Menu */
  /***********************/
  
  var el = $('tutr-area-ddm');
  if (el) 
  {
    // initialize the global drop down element references 
    var s = tutr__area_ddm_selector = el.getElement('div.selector');
    var o = tutr__area_ddm_options = el.getElement('ul.options'); 
    tutr__area_ddm_scrollbar = el.getElement('div.scrollbar');
            
    // handle clicks on the selector
    s.addEvent('click', function(e) {
      e = new Event(e);
      var o = tutr__area_ddm_options;
      var hidden = o.hasClass('tutr-hidden');
      
      // close all menus
      tutr__fyt_close();
      
      // open if
      // necessary
      if (hidden)
      {
        // open the area menu
        tutr__fyt_open('area');
      }      
    });
    
    // add handlers to each teach option in the menu
    o.getElements('li').addEvent('click', function(e) {
      
      // determine teacher id
      // set the select text
      var cid = this.get('id');
      var arr = cid.split('_');
      cid = parseInt(arr[1]);
      tutr__fyt_input_area.value = cid ? 'C-'+cid : '0';
      tutr__fyt_input_area_txt.value = this.get('text');
      tutr__area_ddm_selector.set('text', this.get('text'));
      
      // then just close
      tutr__fyt_close();
    });

    // now and handlers for the scroll up and down buttons with movement
    // which will adjust the display up and down exactly one county row    
    el.getElement('div.scrollbar div.up').addEvent('click', function(e) {
      var s = tutr__area_ddm_slider;
      s.set(s.step - 23);
    });
    el.getElement('div.scrollbar div.down').addEvent('click', function(e) {
      var s = tutr__area_ddm_slider;
      s.set(s.step + 23);
    });
    
    // add mouse enter handlers to show the proper flyouts
    o.getElements('li').addEvent('mouseenter', function(e) {
      e = new Event(e);
    
      // extract the integer id of the
      // county so we can locate the
      // appropriate flyout element
      var cid = this.get('id');
      var arr = cid.split('_');
      cid = parseInt(arr[1]);
      if (!cid) 
      {
        // for the special wildcard
        // just deselect everything
        tutr__fyt_deselect();
        return;
      }
      var flyout = $('tutr-fyt-townships_'+cid);
      var control = flyout.getParent();
    
      // close flyout and deselect any subject that is already open
      if (tutr__area_ddm_open_county != this) tutr__fyt_deselect();
    
      // the flyout has no size while it is hidden
      // so we must make it visible before calculating
      flyout.removeClass('tutr-hidden');
    
      // locate the aboslute position of control element within the document        
      var absoluteContainerOffset = control.getPosition($(document.body));
        
      // locate the absolute position of the subject li too
      var absoluteOffset = this.getPosition($(document.body))
    
      // now determine where relative to the window the subject li
      // is currently located and how big the window is at present
      var subjectRelativeY = absoluteOffset.y - window.getScroll().y;
      var availableY = window.getSize().y;
    
      // determine if we have enough space to open the flyout
      // with its top aligned at the subject li position on page
      if ((subjectRelativeY + flyout.getSize().y) > availableY)
      {
        // calculate the absolute position of the flyout relative to the body by subtractiing
        // the space it requires from the available window height and adding to current scroll
        // under no circumstances should the top of the flyout be above the top of the window
        var absoluteFlyoutY = window.getScroll().y + (window.getSize().y - flyout.getSize().y);
        if (absoluteFlyoutY < window.getScroll().y) absoluteFlyoutY = window.getScroll().y;
      }
      else
      {
        // we had enough space so just position 
        // relative to the subject li element 
        var absoluteFlyoutY = absoluteOffset.y-2;
      }
    
      // now adjust the real position of the flyout element based on the calculations we just performed
      flyout.setStyles({top: absoluteFlyoutY - absoluteContainerOffset.y, left: this.getSize().x+2});
      
      // indicate the county
      // is now selected and open
      this.addClass('selected');
    
      // take note of the flyout and
      // county that has been opened
      tutr__area_ddm_open_county = this;
      tutr__area_ddm_open_flyout = flyout;
    });
   
    // tracks clicks on townships by analyzing their container    
    el.getElements('ul.flyout').addEvent('click', function(e) {
      e = new Event(e);
      var target = $(e.target);   
      if (target.get('tag') != 'li') return;
      
      // determine township id
      // set the select text
      var tid = target.get('id');
      var arr = tid.split('_');
      tid = parseInt(arr[1]);
      tutr__fyt_input_area.value = 'T-'+tid;
      tutr__fyt_input_area_txt.value = target.get('text');
      tutr__area_ddm_selector.set('text', target.get('text'));
      
      // then just close
      tutr__fyt_close();
    });
  }

  /* Fold-out Questions & Answers on Student/Teacher Program Pages */
  /*****************************************************************/

  var el = $('tutr-faq');
  if (el)
  { 
    // find the answer to each question
    var q = el.getElements('a.question');
    q.each(function(item, index) {
      var a = item.getNext('p.answer');
      item.store('answer', a);
    });
    
    // add effects to all answers
    q.each(function(item, index) {
      var a = item.retrieve('answer');
      a.setStyle('display', 'block');
      a.store('fx', new Fx.Slide(a));
      a.retrieve('fx').hide();      
    });
    
    // set click handlers to open answer
    q.addEvent('click', function(e) {
      e = new Event(e).stop();
      var a = this.retrieve('answer');
      a.retrieve('fx').toggle();
    });
  }
  
  /* Results List "OnChange" Behavior for Search Results Page */
  /************************************************************/
  
  var el = $('tutr-search-results-left');
  if (el)
  {
    // find the select and store form reference
    var f = el.getElement('form.results-list');
    var s = f.getElement('select');
    s.store('form', f);
    
    // add the handler to submit form
    s.addEvent('change', function(e) {
      var f = this.retrieve('form');
      f.submit();
    });
  }
  
  
  /* Calendar ToolTips for Search Results Page */
  /*********************************************/
  
  if ($('tutr-search-results'))
  {
    // create the tool tips object and configure appropriately
    var tutr__calendar_tips = new Tips('.tutr-has-more-times', {
      offset: {'x': 8, 'y': 8},
      className: 'tutr-more-times',
      title: function(el) {
        return el.getElement('div.this-date').innerHTML;
      },
      text: function(el) {
        return el.getElement('div.all-times').innerHTML;
      }
    });
    
    // ensure the tips always appear on top of calendar
    tutr__calendar_tips.tip.setStyle('z-index', '1000');
  }
  
  
  /* Ajax/UI Functionality for Schedule Page */
  /*******************************************/
  
  var el = $('tutr-schedule-your-tutor');
  if (el)
  {
    // add handlers to the popup calendar button
    var c = $('tutr-schedule-popup-calendar');
    if (c)
    {
      // create the popup calendar and store some references in the link
      var cal = new Calendar({popupcal1: 'm/d/Y'}, {tweak: {x:-78, y:-290}});
      c.store('calendar', cal);
      c.store('shown', false);
      
      // configure the link to open and
      // close calendar with a hack to 
      // ensure the calendar is closed
      // before we open it again by click
      c.addEvent('click', function(e) {
        e = new Event(e).stop();
        var cal = this.retrieve('calendar');
        if ((cal.calendar.getStyle('display') == 'none') || (!this.retrieve('shown')))
          cal.toggle(cal.calendars[0]);
        this.store('shown', true);
      });
    }  
    
    // add handler to course, session and selection items to properly select when clicked
    el.getElements('div.step1 div.courses div.box ul li').addEvent('click', function(e) {
      var s = tutr__schedule_selected.subject;
      if (s) s.removeClass('selected');
      this.addClass('selected');      
      tutr__schedule_selected.subject = this;
    });
    el.getElements('div.step1 div.times div.box ul li').addEvent('click', function(e) {
      var t = tutr__schedule_selected.time;
      if (t) t.removeClass('selected');
      this.addClass('selected');      
      tutr__schedule_selected.time = this;
    });
    el.getElements('div.step1 div.selections div.box ul li').addEvent('click', function(e) {
      var s = tutr__schedule_selected.selection;
      if (s) s.removeClass('selected');
      this.addClass('selected');
      tutr__schedule_selected.selection = this;
    });
    
    // add handle to the arrow which adds session to the order
    $('tutr-schedule-right-arrow').addEvent('click', function(e) {
      e = new Event(e).stop();
      
      // only take action when items are selected
      var subj = tutr__schedule_selected.subject;
      if (!subj || !subj.hasClass('selected')) return;
      var sess = tutr__schedule_selected.time;
      if (!sess || !sess.hasClass('selected') || sess.hasClass('tutr-hidden')) return;
      
      // retrieve the session and subject ids from the elements
      var sess_id = parseInt(sess.getElement('span.id').get('text'));
      var subj_id = parseInt(subj.getElement('span.id').get('text'));
      
      // create a new selection
      // element to add to order
      var li = new Element('li');
      li.set('id', 'tutr-session-ordered_'+sess_id);
      li.innerHTML = '<pre>'+sess.getElement('.label').get('text')+'; '+subj.getElement('.label').get('text')+'</pre>'+
        '<span class="subject tutr-hidden">'+subj_id+'</span>'+'<span class="session tutr-hidden">'+sess_id+'</span>'+
        '<span class="cost tutr-hidden">'+subj.getElement('span.rate').get('text')+'</span>';
      li.addEvent('click', function(e) {
        var s = tutr__schedule_selected.selection;
        if (s) s.removeClass('selected');
        this.addClass('selected');
        tutr__schedule_selected.selection = this;
      });
      
      // find the right container then add
      var el = $('tutr-schedule-your-tutor');
      var ul = el.getElement('div.step1 div.selections ul');
      ul.grab(li);
      
      // make the consumed session hidden
      var el = $('tutr-session_'+sess_id);
      if (el) el.addClass('tutr-hidden');
      tutr__schedule_update_total();
    });
    
    // add handle to the arrow which removes sessions from order
    $('tutr-schedule-left-arrow').addEvent('click', function(e) {
      e = new Event(e).stop();
      
      // ensure we have a session in order selected
      var sel = tutr__schedule_selected.selection;
      if (!sel || !sel.hasClass('selected')) return;
      
      // extract the session id so we may unhide the session time
      var sess_id = parseInt(sel.getElement('span.session').get('text'));
      var el = $('tutr-session_'+sess_id);
      el.removeClass('tutr-hidden').removeClass('selected');
      
      // remove element
      // and deselect
      sel.dispose();
      tutr__schedule_selected.selection = null;
      tutr__schedule_update_total();      
    });
    
    // add handler to checkout button to process order form
    $('tutr-checkout-button').addEvent('click', function(e) {
      e = new Event(e).stop();
      var el = $('tutr-schedule-your-tutor');
      
      // add extra measure to stop multiple clicks
      if (this.retrieve('disabled')) return false;
      else (this.store('disabled', true));
      
      // begin composing data
      // to send to checkout      
      var post = new Object();
      post.action = 'checkout';
      post.warnings = this.retrieve('warnings');
      
      // extract the teacher id from a hidden tag on the schedule page
      post.teacher = parseInt($('tutr-teacher-identifier').get('text'));
      
      // initialize array to hold
      // the session/subject pairs
      var pairs = new Array();
      
      // extract the selection elements from the first step
      var lis = el.getElements('div.step1 div.selections ul li');
      for (var i=0; i<lis.length; i++)
      {
        // for each of the elements extract the session id and subject/rate id
        var sess_id = parseInt(lis[i].getElement('span.session').get('text'));
        var subjrate_id = parseInt(lis[i].getElement('span.subject').get('text'));
        pairs[pairs.length] = sess_id+','+subjrate_id;
      }
      
      // create a delimited string of
      // id pairs to submit with order
      post.sessions = pairs.join(';');
      
      // now extract the data from the form fields
      var form = el.getElement('div.step2 div.form');
      post.first = form.getElement('input.first').value;
      post.last = form.getElement('input.last').value;
      post.email = form.getElement('input.email').value;
      post.phone = form.getElement('input.phone').value;
      post.cell = form.getElement('input.cell').value;
      post.location = form.getElement('textarea.location').value;
      post.specialneeds = form.getElement('textarea.specialneeds').value;
      
      // also provide the state of the agreed to policy box
      var checkbox = el.getElement('div.step3 input.agree');
      post.agree = checkbox.checked ? 'YES' : 'NO';
      
      // show the processing indicator
      this.retrieve('show-activity')();
    
      // initiate the ajax request to create the order and establish order details for use during paypal checkout process
      var request = new Request.JSON({ url: 'checkout.php', onComplete: this.retrieve('submission-complete') }).post(post);      
    });
    
    // prepare a series of helper functions for the checkout process handling
    $('tutr-checkout-button').store('submission-complete', function(obj, text) {
      var btn = $('tutr-checkout-button');
      var el = $('tutr-schedule-your-tutor');
      
      // ensure that we have a valid object to process
      if (!(obj instanceof Object)) obj = new Object();
      if (!obj.success)
      {
        // when a warning is issued set the flag to ignore
        // future warnings as the shopper has been warned
        if (obj.warning) btn.store('warnings', 'ignore');
        btn.retrieve('show-message')(obj.error);
      }
      else
      { 
        // prepare the checkout values based on the page and information returned on checkout
        var amount = parseFloat(el.getElement('div.step1 div.total div.value').get('text'));
        var item_number = parseInt(obj.orderid);
        var item_name = obj.item;
        
        // copy the values to the paypal
        // form then submit to begin payment
        var form = $('tutr-paypal-form');
        form.getElement('input.amount').value = amount;
        form.getElement('input.item_number').value = item_number;
        form.getElement('input.item_name').value = item_name;
        form.submit();
      }
      
      // if we get here enusre the
      // button is reenabled for use
      btn.store('disabled', false);
    });
    $('tutr-checkout-button').store('show-activity', function() {
      $('tutr-public-policy').set('opacity', 0.5);
      $('tutr-ajax-activity').removeClass('tutr-hidden');
      $('tutr-ajax-message').addClass('tutr-hidden');
    });
    $('tutr-checkout-button').store('show-message', function(message) {
      $('tutr-public-policy').set('opacity', 0.5);
      $('tutr-ajax-activity').addClass('tutr-hidden');
      var el = $('tutr-ajax-message');
      el.removeClass('tutr-hidden');
      var p = el.getElement('p');
      p.set('text', message);
    });
    $('tutr-ajax-message').getElement('div.close').addEvent('click', function(e) {
      e = new Event(e).stop();
      $('tutr-ajax-message').addClass('tutr-hidden');
      $('tutr-ajax-activity').addClass('tutr-hidden');
      $('tutr-public-policy').set('opacity', 1);
    });
    
    // when 'checkout' clicked
    
    // send to checkout.php
    
    // checkout.php will respond will either (success, order no.), (error, message), (warning, message)
    
    // on error, must correct/retry,
    // on warning, nothing happens, but when checkout is clicked again, special flag sent to checkout.php to ignore warnings
    // on success, order number is inserted into hidden form, hidden form posts to paypal, and paypal checkout begins,
    
    
    // on paypal cancel, take them to projector screen (home-style) page with static canceled message and some instructions, also use session information which contains order id that was used during checkout, and release sessions, delete order
    // on paypal success, take them to projector screen (home-style) static page with basic transaction complete message (tell them about emails they should be receiving)
    
    
    
  }
  
  /* Dynamic Ratings Stars on the Post A Review Page */
  /***************************************************/
  
  var el = $('tutr-post-review');
  if (el)
  {
    // find the drop-down and add code to place stars
    var ddm = el.getElement('table.form select.rating');
    if (ddm) ddm.addEvent('change', function(e) {
      var stars = $('tutr-post-review').getElement('table.form td.stars.graphic');
      var faded = stars.getElement('div.images img.faded');
      var empty = stars.getElement('div.images img.empty');
      var half = stars.getElement('div.images img.half');
      var full = stars.getElement('div.images img.full');
      var output = stars.getElement('div.dynamic');
      var rating = this.value;
      output.empty();
      
      // handle the special
      // case of no rating
      if (rating == 'N')
      {
        for (var i=0; i<5; i++) output.grab(faded.clone());
        return;
      }
      
      // use the rounded multiplied
      // algorithm to construct stars
      rating = parseFloat(rating);
      var r = Math.round(rating * 10);
      for (var i=1; i<=5; i++)
      {
        if (r >= i*10) output.grab(full.clone());
        else if (r >= ((i*10)-5)) output.grab(half.clone());
        else output.grab(empty.clone());
      }
    });
  }
  
});



/* FYT Global References */
/*************************/

var tutr__fyt_form;
var tutr__fyt_input_subject;
var tutr__fyt_input_subject_txt;
var tutr__fyt_input_teacher;
var tutr__fyt_input_teacher_txt;
var tutr__fyt_input_area;
var tutr__fyt_input_area_txt;

var tutr__teacher_ddm_selector;
var tutr__teacher_ddm_options;
var tutr__teacher_ddm_scrollbar;
var tutr__teacher_ddm_slider;

var tutr__area_ddm_selector;
var tutr__area_ddm_options;
var tutr__area_ddm_scrollbar;
var tutr__area_ddm_slider;
var tutr__area_ddm_open_flyout;
var tutr__area_ddm_open_county;

var tutr__subject_ddm_selector;
var tutr__subject_ddm_options;
var tutr__subject_ddm_scrollbar;
var tutr__subject_ddm_slider;
var tutr__subject_ddm_open_flyout;
var tutr__subject_ddm_open_subject;

/* FYT Drop-Down Functions */
/***************************/

function tutr__fyt_open(menu)
{
  // handle request to open
  // each menu differently
  
  // the subjects menu
  // just must be shown
  if (menu == 'subjects')
  {
    var o = tutr__subject_ddm_options.removeClass('tutr-hidden');    
  }  
  
  // the teachers menu
  // requires a scrollbar
  if (menu == 'teachers')
  {
    var o = tutr__teacher_ddm_options.removeClass('tutr-hidden');
    var sc = tutr__teacher_ddm_scrollbar.removeClass('tutr-hidden');
    
    var sl = tutr__teacher_ddm_slider;
    if (!sl)
    {
      // reset position
      o.scrollTo(0,0);

      var positions = o.getScrollSize().y - o.getSize().y;
      tutr__teacher_ddm_slider = new Slider(sc.getElement('div.slide'), sc.getElement('div.knob'), {mode: 'vertical', range:[0, positions],
        onChange: function (pos) {
            tutr__teacher_ddm_options.scrollTo(tutr__teacher_ddm_options.getScroll().x, pos);
          }});
    }
  }  
  
  // the area menu also
  // requires a scrollbar
  if (menu == 'area')
  {
    var o = tutr__area_ddm_options.removeClass('tutr-hidden');
    var sc = tutr__area_ddm_scrollbar.removeClass('tutr-hidden');
    
    var sl = tutr__area_ddm_slider;
    if (!sl)
    {
      // reset position
      o.scrollTo(0,0);

      var positions = o.getScrollSize().y - o.getSize().y;
      tutr__area_ddm_slider = new Slider(sc.getElement('div.slide'), sc.getElement('div.knob'), {mode: 'vertical', range:[0, positions],
        onChange: function (pos) {
            tutr__area_ddm_options.scrollTo(tutr__area_ddm_options.getScroll().x, pos);
          }});
    }
  }  
}

function tutr__fyt_close()
{
  // for simplicity just closes all menus then deselects too
  var o = tutr__subject_ddm_options.addClass('tutr-hidden');
  var o = tutr__teacher_ddm_options.addClass('tutr-hidden');
  var sc = tutr__teacher_ddm_scrollbar.addClass('tutr-hidden');
  var o = tutr__area_ddm_options.addClass('tutr-hidden');
  var sc = tutr__area_ddm_scrollbar.addClass('tutr-hidden');
  tutr__fyt_deselect();
}

function tutr__fyt_deselect()
{
  // for simplicity just deselects all the
  // subjects and counties and closes flyouts
  var f = tutr__subject_ddm_open_flyout;
  var s = tutr__subject_ddm_open_subject;
  if (f) f.addClass('tutr-hidden');
  if (s) s.removeClass('selected');
  var f = tutr__area_ddm_open_flyout;
  var s = tutr__area_ddm_open_county
  if (f) f.addClass('tutr-hidden');
  if (s) s.removeClass('selected');
}


/* Schedule Page References */
/****************************/

var tutr__schedule_selected = new Object();

/* Schedule Page Functions */
/***************************/

function tutr__schedule_update_total()
{
  // ensure the main page element exists
  var el = $('tutr-schedule-your-tutor');
  if (!el) return;
  
  // use storage to calculate
  // total, initialize to zero
  el.store('total', 0);
  
  // retrieve all of the items in the selections box and add each embedded cost to total
  el.getElements('div.step1 div.selections div.box ul li').each(function(item, index) {
    var el = $('tutr-schedule-your-tutor');
    var cost = parseFloat(item.getElement('span.cost').get('text'));
    el.store('total', el.retrieve('total')+cost);
  });
  
  // update the computed total onto the page in right spot
  var tot = el.getElement('div.step1 div.total div.value');
  tot.set('text', el.retrieve('total').toFixed(2));
}