var more_toggles = null;
var more_content_height = [];
var more_content_fx = [];
var dropdown_timeouts = [];
var dropdown_selected = null;
var seminar_register = null;
var group_number = null;
var purchase_type = null;
var resource_copy_boxes = null;
var resource_copy_heights = [];
var resource_copy_fx = [];
window.addEvent('domready', function() {

  var nav_links = $$('.nav_li');
  if (nav_links) {
    nav_links.each(function(nav_link) {
      var selected_menu = nav_link.getElement('a.selected');
      if (selected_menu) {
        var idxs = nav_link.getAttribute('id').split('_');
        dropdown_selected = idxs[1];
      }
      var dropdown = nav_link.getElement('.nav_dropdown');
      if (dropdown) {
        nav_link.addEvent('mouseenter', function(e) {
          var idxs = this.getAttribute('id').split('_');
          clearTimeout(dropdown_timeouts[idxs[1]]);
          dropdown_timeouts[idxs[1]] = null;
          dropdown = nav_link.getElement('.nav_dropdown');
          dropdown.setStyle('display', 'block');
        });
        nav_link.addEvent('mouseleave', function(e) {
          var idxs = this.getAttribute('id').split('_');
          dropdown = nav_link.getElement('.nav_dropdown');
          dropdown_timeouts[idxs[1]] = setTimeout(hideDropdown.bind(dropdown), 250);
        });
        dropdown.addEvent('mouseenter', function(e) {
          e = new Event(e).stop();
          var idxs = this.getAttribute('id').split('_');
          var link = document.getElement('#nav_'+idxs[1]+' a');
          link.addClass('selected');
          clearTimeout(dropdown_timeouts[idxs[1]]);
          dropdown_timeouts[idxs[1]] = null;
          this.setStyle('display', 'block');
        });
        dropdown.addEvent('mouseleave', function(e) {
          var idxs = this.getAttribute('id').split('_');
          dropdown_timeouts[idxs[1]] = setTimeout(hideDropdown.bind(this), 250);
        });
        // set height of right hand box
        var mid = dropdown.getElement('.dropdown_mid');
        var right = dropdown.getElement('.dropdown_mid_right');
        dropdown.setStyle('display', 'block');
        right.setStyle('height', mid.getSize().y+'px');
        dropdown.setStyle('display', 'none');
      }
    });
  }

  var newsletter_form = document.forms['newsletter_subscribe'];
  if (newsletter_form) {
    newsletter_form = $(newsletter_form);
    new ClearTextInput(newsletter_form.newsletter_name);
    new ClearTextInput(newsletter_form.newsletter_email);

    var n_name = $(newsletter_form.newsletter_name);
    var n_email = $(newsletter_form.newsletter_email);
    var n_close = $('newsletter_close');
    n_name.addEvent('focus', showNewsletterPopup);
    n_email.addEvent('focus', showNewsletterPopup);
    n_close.addEvent('click', hideNewsletterPopup);

    newsletter_form.addEvent('submit', function() {
      why = '';
      if (newsletter_form.newsletter_name.value == newsletter_form.newsletter_name.defaultValue ||
          !newsletter_form.newsletter_name.value.length) {
        why += 'Please enter your name\r\n';
      }
      if (newsletter_form.newsletter_email.value == newsletter_form.newsletter_email.defaultValue ||
          !checkEmail(newsletter_form.newsletter_email.value)) {
        why += 'Please enter your email address\r\n';
      }
      // make sure they selected something
      var selected = false;
      var checkboxes = newsletter_form.getElements('input[type=checkbox]');
      checkboxes.each(function(checkbox) {
        if (checkbox.checked) {
          selected = true;
        }
      });
      if (!selected) {
        why += 'Please select a newsletter to subscribe to\r\n';
      }

      if (why) {
        alert(why);
        return false;
      }
      return true;
    });
  }

  var restrict_close = $('restrict_close')
  if (restrict_close) {
    restrict_close.addEvent('click', function(e) {
      e = new Event(e).stop();
      $('restrict_popup').setStyle('display','none');
    });
    var restrict_links = $$('.restrict_link');
    if (restrict_links) {
      restrict_links.each(function(r_link) {
        r_link.addEvent('click', function(e) {
          e = new Event(e).stop();
          $('restrict_popup').setStyle('display','block');
        })
      });
    }
  }

  var enquiry_form = document.forms['enquiry_form'];
  if (enquiry_form) {
    enquiry_form = $(enquiry_form);

    enquiry_form.addEvent('submit', function() {
      why = '';
      if (!enquiry_form.first_name.value.length) {
        why += 'Please enter your first name\r\n';
      }
      if (!enquiry_form.surname.value.length) {
        why += 'Please enter your surname\r\n';
      }
      if (!checkEmail(enquiry_form.email.value)) {
        why += 'Please enter your email address\r\n';
      }
      if (!enquiry_form.subject.selectedIndex) {
        why += 'Please select a message subject\r\n';
      }
      if (!enquiry_form.message.value.length) {
        why += 'Please enter your message\r\n';
      }
      if (why) {
        alert(why);
        return false;
      }
      return true;
    });
  }

	// handle all more/less text boxes
	more_toggles = $$('.more_toggle');
	if (more_toggles) {
		var idx = 0;
		more_toggles.each(function(toggle) {
			toggle.addEvent('click', function(e) {
				e = new Event(e).stop();
				var tar = $(e.target);
				while (!tar.hasClass('more_toggle')) {
					tar = $(tar.parentNode);
				}
				var content = tar.getPrevious('div');
				if (content.hasClass('more_content')) {
					var idx = content.getAttribute('rel');
					if (content.getSize().y) {
						more_content_fx[idx].start('height', 0);
					}
					else {
						more_content_fx[idx].start('height', more_content_height[idx]);
					}
				}
			});
			var content = toggle.getPrevious('div');
			if (content.hasClass('more_content')) {
				content.setAttribute('rel', idx);
				more_content_fx[idx] = new Fx.Tween(content, {onComplete : function() {
					var content = $(this.element);
					var a = content.getNext('a');
					if (a.hasClass('more_toggle')) {
						if (content.getSize().y) {
							a.set('html', 'Show Less');
							a.removeClass('more_toggle_closed');
						}
						else {
							a.set('html', 'Show More');
							a.addClass('more_toggle_closed');
						}
					}
				}});
				more_content_height[idx] = content.getSize().y;
				more_content_fx[idx].set('height', 0);
				toggle.setStyle('display', 'inline');
				toggle.set('html', 'Show More');
				toggle.addClass('more_toggle_closed');
			}
			idx++;
		});
	}


  var radio_labels = $$('label.radio');
  if (radio_labels) {
    radio_labels.each(function(label) {
      label.addEvent('click', function(e) {
        e = new Event(e).stop();
        var tar = $(e.target);
        var radio = tar.form[tar.htmlFor];
        // turn off other radio buttons
        var form = radio.form;
        form.getElements('input[type=radio]').each(function(t_radio) {
          t_radio.checked = false;
          var label = $(t_radio).getNext('label');
          label.setStyle('background-image', 'url(images/module/radio_off.gif)');
        })
        radio.checked = true;
        tar.setStyle('background-image', 'url(images/module/radio_on.gif)');
      });
      var radio = $(label.form[label.htmlFor]);
      radio.setStyle('display', 'none');
      label.setStyles({'padding-left': '20px', 'background':'transparent url(images/module/radio_off.gif) top left no-repeat'});
    });
  }

  var poll_form = document.forms['poll_form'];
  if (poll_form) {
    poll_form = $(poll_form);
    poll_form.addEvent('submit', function(e) {
      why = '';

      // make sure they chose an option
      checked = false;
      this.getElements('input[type=radio]').each(function(t_radio) {
        if (t_radio.checked) {
          checked = true;
        }
      });
      if (!checked) {
        why = 'Please select an option';
      }

      if (why) {
        alert(why);
        return false;
      }

      return true;
    });
    var poll_results = $('poll_result_wrapper');
    var poll_wrapper = $('poll_form_wrapper');
    if (poll_results.hasClass('show_results')) {
      poll_wrapper.setStyle('display','none');
    }
    else {
      poll_results.setStyle('display','none');
    }
    var result_a = poll_results.getElement('a');
    if (result_a) {
      result_a.setStyle('display', 'inline');
      result_a.addEvent('click', function(e) {
        e = new Event(e).stop();
        poll_results.setStyle('display','none');
        poll_wrapper.setStyle('display','block');
      });
    }
    var form_a = poll_wrapper.getElement('a');
    if (form_a) {
      form_a.setStyle('display', 'inline');
      form_a.addEvent('click', function(e) {
        e = new Event(e).stop();
        poll_wrapper.setStyle('display','none');
        poll_results.setStyle('display','block');
      });
    }
  }

  var search_form = document.forms['search_form'];
  if (search_form) {
    search_form = $(search_form);
    new ClearTextInput(search_form.q);
  }

  var toggle_text_size = $('toggle_text_size');
  if (toggle_text_size) {
/*
    toggle_text_size.addEvent('mouseenter', etmenurollOver);
    toggle_text_size.addEvent('mouseleave', etmenurollOut);
*/
    toggle_text_size.addEvent('click', etmenuClick);
    setTextSize();
  }

  var print_link = $('print_page');
  if (print_link) {
    print_link.addEvent('click', function(e) {
      e = new Event(e).stop();
      window.print();
    });
  }

  seminar_register = document.forms['seminar_register'];
  if (seminar_register) {
    seminar_register = $(seminar_register);
    purchase_type = $(seminar_register.purchase_type);
    group_number = $(seminar_register.group_number);
    purchase_type.addEvent('change', function() {
      toggleGroupNumber(this.value);
    });
    seminar_register.addEvent('submit', function(e) {
      why = '';
      if (purchase_type.value == '1') {
        // make sure they selected some sessions
        var checked = false;
        var sessions = seminar_register.getElements('input[type=checkbox]');
        sessions.each(function(session) {
          if (session.checked) {
            checked = true;
          }
        });
        if (!checked) {
          why = "Please select a session to purchase.";
        }
      }

      if (why) {
        alert(why);
        return false;
      }
      if (purchase_type.value == '1') {
        return confirm('You will now be directed to our payment gateway. Are you sure you want to continue?');
      }
      else {
        return true;
      }
    });
    toggleGroupNumber(purchase_type.value);
  }

  // if there is no scroll bar, hide the back to top link
  var footer_top = $('footer_top');
  if (footer_top) {
    window_size = window.getSize();
    window_scrollsize = window.getScrollSize();
    if (window_scrollsize.y <= window_size.y) {
      $('footer_top').setStyle('display', 'none');
    }
    footer_top.addEvent('click', function(e) {
      e = new Event(e).stop();
      document.location.hash = 'content';
    });
  }

  var restrict_popups = $$('.restrict_popup');
  resource_copy_boxes = $$('.resource_copy');
  if (resource_copy_boxes) {
    resource_copy_boxes.each(function(resource_copy_box) {
      // find header associated with this
      var idxs = resource_copy_box.getAttribute('id').split('_');
      var resource_header = $('resourceheader_'+idxs[1]);
      resource_header.addEvent('click', function(e) {
        e = new Event(e).stop();
        if (restrict_popups) {
          restrict_popups.setStyle('display', 'none');
        }
        var h3 = $(e.target);
        var idxs = h3.getAttribute('id').split('_');
        var copy_box = $('resourcecopy_'+idxs[1]);
        if (copy_box.getSize().y) {
          resource_copy_fx[idxs[1]].start('height', 0);
        }
        else {
          resource_copy_fx[idxs[1]].start('height', resource_copy_heights[idxs[1]]);
          // are there any others that are open
          resource_copy_boxes.each(function(resource_copy_box) {
            if (resource_copy_box != copy_box && resource_copy_box.getSize().y) {
              var cidxs = resource_copy_box.getAttribute('id').split('_');
              resource_copy_fx[cidxs[1]].start('height', 0);
            }
          });
        }
      });
      resource_copy_box.setStyle('display', 'block');
      resource_copy_heights[idxs[1]] = resource_copy_box.getSize().y;
      resource_copy_fx[idxs[1]] = new Fx.Tween(resource_copy_box);
      resource_copy_fx[idxs[1]].set('height', 0);
    });
  }

  var unavailable_resources = $$('.resource_unavailable');
  if (unavailable_resources) {
    unavailable_resources.each(function(resource_link) {
      var resource_wrapper = resource_link.getParent('.resource_wrapper');
      var restrict_popup = resource_wrapper.getElement('.restrict_popup');
      var restrict_close = restrict_popup.getElement('.popup_close');
      resource_link.addEvent('click', function(e) {
        e = new Event(e).stop();
        restrict_popups.setStyle('display', 'none');
        var resource_wrapper = this.getParent('.resource_wrapper');
        var restrict_popup = resource_wrapper.getElement('.restrict_popup');
        // add the popup for
        var coords = this.getCoordinates(this.getOffsetParent());
        restrict_popup.setStyles({display: 'block', top: (coords.top-105)+'px', left: '0px'});
      });
      restrict_close.addEvent('click', function(e) {
        e = new Event(e).stop();
        restrict_close.parentNode.setStyle('display', 'none');
      });
    });
  }

  var share_link = $('share_link');
  if (share_link) {
    var share_popup = $('share_popup');
    share_link.addEvent('click', function(e) {
      e = new Event(e).stop();
      if (share_popup.getStyle('display') == 'block') {
        share_popup.setStyle('display', 'none');
      }
      else {
        var coords = this.getCoordinates($('content'));
        share_popup.setStyles({display: 'block', top: (coords.top-100)+'px', left: (coords.left-50)+'px'});
      }
    });
    var share_close = share_popup.getElement('.popup_close');
    share_close.addEvent('click', function(e) {
      e = new Event(e).stop();
      share_close.parentNode.setStyle('display', 'none');
    });
    new ClearTextInput(share_popup.getElement('input[type=text]'));
    var share_form = $(share_popup.getElement('form'));
    share_form.addEvent('submit', function(e) {
      why = null;
      if (this.friend_email.value == this.friend_email.defaultValue ||
          !checkEmail(this.friend_email.value)) {
        why = 'Please enter a valid email address';
      }
      if (why) {
        alert(why);
        return false;
      }
      return true;
    });
  }

});

function toggleGroupNumber(value)
{

  var sessions = seminar_register.getElements('input[type=checkbox]');
  if (value == "1") {
    group_number.parentNode.setStyle('display', 'none');
    sessions.each(function(session) {
      if (session.disabled) {
        session.checked = false;
      }
    });
  }
  else {
    group_number.parentNode.setStyle('display', 'block');
    sessions.each(function(session) {
      session.checked = true;
    });
  }
}

function hideDropdown()
{
  var idxs = this.getAttribute('id').split('_');
  this.setStyle('display', 'none');
  if (idxs[1] != dropdown_selected) {
    var link = document.getElement('#nav_'+idxs[1]+' a');
    link.removeClass('selected');
  }
}

function etmenurollOver(el) {
  this.setAttribute('src', base_url+'img/m_'+this.getAttribute('name')+'_h.gif');
}
function etmenurollOut(el) {
  if (!site_largetext) {
    this.setAttribute('src', base_url+'img/m_'+this.getAttribute('name')+'.gif')
  }
}
function etmenuClick(el) {
  if (text_size) {
    text_size = 0;
  }
  else {
    text_size = 1;
  }
  new Request({method: 'get', url: base_url+'index/setTextSize'}).send('text_size='+text_size);
  setTextSize();
}

function setTextSize() {
  var copy_sections = $$('.content_copy, .seminar_copy');
  if (copy_sections.length) {
    if (text_size) {
      copy_sections.setStyle('font-size', '140%');
    }
    else {
      copy_sections.setStyle('font-size', '100%');
    }
  }
}

function showNewsletterPopup() {
  var n_popup = $('newsletter_popup');
  n_popup.setStyle('display', 'block');
}
function hideNewsletterPopup() {
  var n_popup = $('newsletter_popup');
  n_popup.setStyle('display', 'none');
}

var ClearTextInput = new Class({

	Implements: [Events, Options],

  options: {
/*  onFocus: $function,
    onBlur: $function  */
  },

  element: null,

  initialize: function(element, options)
  {
    this.setOptions(options);
    this.element = $(element);
    this.element.addEvent('focus', function(e) {
      if (this.element.value == this.element.defaultValue) {
        this.element.value = '';
      }
      this.fireEvent('focus', [this.element]);
    }.bind(this));
    this.element.addEvent('blur', function(e) {
      if (this.element.value == '') {
        this.element.value = this.element.defaultValue;
      }
      this.fireEvent('blur', [this.element]);
    }.bind(this));
  }

});

function checkEmail (strng) {
  var valid = true;
  if (strng == "") {
     valid = false;
  }
  else if (!isRFC822ValidEmail(strng)) {
     valid = false;
  }
  return valid;
}
function isRFC822ValidEmail(sEmail) {

  var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
  var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
  var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
  var sQuotedPair = '\\x5c[\\x00-\\x7f]';
  var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
  var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
  var sDomain_ref = sAtom;
  var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
  var sWord = '(' + sAtom + '|' + sQuotedString + ')';
  var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
  var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
  var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
  var sValidEmail = '^' + sAddrSpec + '$'; // as whole string

  var reValidEmail = new RegExp(sValidEmail);

  if (reValidEmail.test(sEmail)) {
    return true;
  }

  return false;
}