lanaudiere_js = {};
lanaudiere_js.forms = lanaudiere_js.forms || {};
lanaudiere_js.ui = lanaudiere_js.ui || {};
lanaudiere_js.search = lanaudiere_js.search || {};

/***********************************************************
*
* UI
*
***********************************************************/

/* mp3 player replacement mangement */
lanaudiere_js.ui.ap_instances = new Array();

  function ap_stopAll(playerID) {
    for(var i = 0;i<lanaudiere_js.ui.ap_instances.length;i++) {
      try {
        if(lanaudiere_js.ui.ap_instances[i] != playerID) document.getElementById("audioplayer" + lanaudiere_js.ui.ap_instances[i].toString()).SetVariable("closePlayer", 1);
        else document.getElementById("audioplayer" + lanaudiere_js.ui.ap_instances[i].toString()).SetVariable("closePlayer", 0);
      } catch( errorObject ) {
        // stop any errors
      }
    }
  }

  function ap_registerPlayers() {
    var objectID;
    var objectTags = document.getElementsByTagName("object");
    for(var i=0;i<objectTags.length;i++) {
      objectID = objectTags[i].id;
      if(objectID.indexOf("audioplayer") == 0) {
        lanaudiere_js.ui.ap_instances[i] = objectID.substring(11, objectID.length);
      }
    }
  }

  var ap_clearID = setInterval( ap_registerPlayers, 100 );


lanaudiere_js.ui.params_hide = { opacity: 0 };
lanaudiere_js.ui.params_show = {  opacity: 1 };

lanaudiere_js.ui.init = function()
{
  lanaudiere_js.ui.menu('#mainmenu_container');
  
	/* tabs experience event handler */
  lanaudiere_js.ui.experiencesTabsInit('#tabs_experiences');
  
  /* main header image legend caption */
  //lanaudiere_js.ui.headerLegendInit();
    
	/* tabs slide in event handler (member section) */
  lanaudiere_js.ui.slideTabsInit();

	/* tabs in generic static pages (wysiwyg html hardcoded) */
  lanaudiere_js.ui.genericTabsInit();

  /* bloc calendrier / actualtes event handler */
  lanaudiere_js.ui.blocCalendrierActualitesInit();
  
  /* bloc album image */
  lanaudiere_js.ui.pagerInit('.forfaits', '.forfait_container');
  lanaudiere_js.ui.pagerInit('.album_image', '.media_container');
  
  /* blocs collapsables */
  lanaudiere_js.ui.collapsablePanelsInit('.filters .bloc');
  lanaudiere_js.ui.collapsablePanelsInit('#zone_membre form .search_box .subtitle');
  
  /* thematiques bloc */
  lanaudiere_js.ui.blocThematiquesInit();
  
  /* generic editable body : multiple inits */
  lanaudiere_js.ui.contentToolboxInit();
  
  /* fancybox images */
  lanaudiere_js.ui.fancyBoxImages("a[rel^='lightboxable'], a.lightboxable");
  
	/* fancybox videos */
  lanaudiere_js.ui.fancyBoxVideoInit("a.lightboxable_video");

  /* favorites buttons */
  lanaudiere_js.ui.favoritesInit();
  
	/* bind gMap itinary window.open to all Dom asking for it */
	lanaudiere_js.ui.gMapItineraryInit();

	/* bind print handler to all .bt_print */
	$('.bt_print').show().click(function() { window.print(); return false;	});

	Cufon.replace('h1', { fontFamily: 'DaxMedium', hover: true});
	Cufon.replace('h2', { fontFamily: 'DaxMedium', hover: true});
	Cufon.replace('h3', { fontFamily: 'DaxMedium', hover: true});
  Cufon.replace('.fontDM', { fontFamily: 'DaxMedium', hover: true});
  Cufon.replace('.fontDCEB', { fontFamily: 'DaxCompactExtraBold', hover: true});
  
  $(".datepicker").datepicker({
      dateFormat: 'yy-mm-dd', 
			showOn: 'button',
			buttonImage: heap.urlmap['static']+'/images/ico_calendar.gif',
			buttonImageOnly: true
		});
		
	/* GUI finetuning */
  lanaudiere_js.ui.adjustDisplay();
};

lanaudiere_js.ui.experiencesTabsInit = function(selector)
{  
  $(selector+' ul li a').not('.disabled').bind('click', function(){
    
    if (!$(this).is('.selected') && !$(this).is('.selected_next'))
    {      
      window.clearInterval(lanaudiere_js.ui.timer); 
      //$('#bkg_cycle').cycle('stop');      
    }
    else if ($(this).is('.selected'))
    {
      return false;
    }
    
    var target_tab = $(this).attr('rel')+'_experience';
    var target_pic = $(this).attr('rel')+'_bkg';
    var next_selected_li =  $(this).parent().next();
    
    $('.tabs ul li a').removeClass('selected_next').removeClass('selected');
    $(this).addClass('selected');    
    next_selected_li.find('a').addClass('selected_next');
    
    if(!next_selected_li.length)
      $('.tabs ul li a').eq(0).addClass('selected_next');
    
    $('.tabs_content_experiences .tabs_item').hide();    
    $(target_tab).show();
    if(!$(this).is('.slideshow_disabled'))
    {
      $(target_pic).animate(lanaudiere_js.ui.params_show, 800, function(){

      });
      $('.bkg_container:not('+target_pic+')').animate(lanaudiere_js.ui.params_hide, 500, function(){
      
      });
      //$('.bkg_container').hide();
      //$(target_pic).fadeIn();
    }
    Cufon.refresh();
    return false;
  });
  
  lanaudiere_js.ui.timer = window.setInterval("$('#tabs_experiences ul li a.selected_next:not(.slideshow_disabled)').trigger('click')", 5000);
  
};

lanaudiere_js.ui.slideTabsInit = function()
{
	$('.tabs_slide ul li a').not('.disabled').click(function(event){
		event.preventDefault();
		if ($(this).parent().is('.selected')) return false;
    var target = $(this).attr('rel');
    $('.tabs_slide ul li').removeClass('selected');
    $(this).parent().addClass('selected');

		$('.tabs_slide ~ .tabs_slide_content').hide().children().hide();
		$('.'+target).show().children().fadeIn(500);
		
		// bind close button handler
    lanaudiere_js.ui.slideTabsCloserInit('.'+target);

		Cufon.refresh();
    return false;
  });
};

lanaudiere_js.ui.slideTabsCloserInit = function(selector)
{
		$('.bt_close').click(function(){
			$('.tabs_slide ul li').removeClass('selected');
			$('.tabs_slide_content').slideUp(300);
			Cufon.refresh();
			return false;
		});
};

lanaudiere_js.ui.genericTabsInit = function()
{
	$('.single_page .main_body .tabs_item').hide(); // hide all tab
	$('.single_page .main_body .tabs_item:first').show(); // hide all tab
	$('.single_page .main_body .tabs_merged ul li:first-child').addClass("first selected"); // select first element
	$('.single_page .main_body .tabs_merged ul li a').not('.disabled').click(function(event){
		event.preventDefault();
		if ($(this).parent().is('.selected')) return false;
    var target = $(this).attr('rel');
    $('.single_page .main_body .tabs_merged ul li').removeClass('selected');
    $(this).parent().addClass('selected');
		$('.single_page .main_body .tabs_item').hide();
		$('#'+target).stop().fadeIn(300);
			
		Cufon.refresh();
    return false;
  });

};

lanaudiere_js.ui.headerLegendInit = function()
{
  var params_hide = { height: "0px", opacity: 0 };
  var params_show = { height: "23px", opacity: 1 };
  //$('.bkg_container_legend .legend').css(params_hide);
  $('.bkg_container_legend').hover(
    function () {
      $(this).parent().find('.legend').animate(params_show, 400, function(){});
    },
    function () {
      $(this).parent().find('.legend').animate(params_hide, 500, function(){});
    }
  );
};

lanaudiere_js.ui.fancyBoxImages = function(selector)
{
  $('.lightboxable-trigger').bind('click', function(){    
    var target = $(this).attr('rel');
    $(target).trigger('click');
    return false;  
  });
  
  $(selector).fancybox({
    'transitionIn'	:	'fade',
    'transitionOut'	:	'fade',
    'speedIn'		:	600, 
    'speedOut'		:	200,
    'overlayOpacity':	0.8,
    'overlayColor':	'#000',
    'titleShow':	true,
    'titlePosition':	'inside',
    'titleFormat' : function(title, currentArray, currentIndex, currentOpts) {
      return '<span id="fancybox-title-wrap">' + title + '</span><span id="fancybox-title-nav">' +  (currentIndex + 1) + ' / ' + currentArray.length + '</span>';
     },    
    'padding' :	6,
    'onStart': function () { window.clearInterval(lanaudiere_js.ui.timer); window.clearInterval(lanaudiere_js.ui.timerSlideshow); }
  });
};

lanaudiere_js.ui.fancyBoxVideoInit = function(selector) {
	$(selector).each(function(){
		var dimensions = $(this).attr('rel').split(",");
		lanaudiere_js.ui.fancyBoxVideo("#"+$(this).attr('id'), {
			href: $(this).attr('href'),
			width: parseInt(dimensions[0]),
			height: parseInt(dimensions[1])
		});
	});
}

lanaudiere_js.ui.fancyBoxVideo = function(selector, options)
{	
	var player = heap.urlmap['static'] + "/swf/player.swf";
	var offsetHeight = 50;
	options.params = options.params || {};
	options.params.allowFullScreen = 'true';
	options.params.salign = 'tl';
	options.params.wmode = 'opaque';
	options.params.scale = 'noscale';
	options.params.flashvars = "videoURL="+options.href;
	$(selector).fancybox({
    'transitionIn'	:	'fade',
    'transitionOut'	:	'fade',
    'speedIn'		:	600, 
    'speedOut'		:	200,
    'overlayOpacity':	0.8,
    'overlayColor':	'#000',
    'titleShow':	false,
		'showNavArrows': false,
		'enableKeydown': false,
    'padding' :	6,
		'type' : 'swf',
		'swf': options.params,
		'href': player,
		'width': options.width,
		'height': options.height + offsetHeight,
		'onStart': function () { window.clearInterval(lanaudiere_js.ui.timer); window.clearInterval(lanaudiere_js.ui.timerSlideshow); }
  });
};

lanaudiere_js.ui.blocCalendrierActualitesInit = function()
{
  $('.calendrier .title a').bind('click', function(){ 
    var rel = $(this).attr('rel');
    var target = '#'+rel+'_item';  
    var top_elem = $(this).closest('.top');
    
    if (top_elem.is('.selected_'+rel))
      return false;
      
    if(!$(this).closest('.top').is('.selected_'+rel))
      $(this).closest('.top').attr('class','top');
      
    $(this).closest('.top').addClass('selected_'+rel);    
    $('.calendrier .body .item').hide();
    $(target).fadeIn();    
    return false;
  });
};

lanaudiere_js.ui.blocThematiquesInit = function()
{
  $('.bloc_thematiques a.title').bind('click', function(){  
    var target = $(this).attr('rel');
    var params_hide = { height: "0px", opacity: 0 };
    var params_show = { height: "131px", opacity: 1 };
    var that = $(this);

    if($(this).hasClass('hidden'))
    {
      $('.bloc_thematiques a.title:not(.hidden)').addClass('hidden');
      $('.bloc_thematiques .container:not(.hidden)').animate(params_hide, 500, function() {
        $(this).addClass('hidden');
      });      
      $(target).animate(params_show, 500, function() {
        $(this).removeClass('hidden');
        that.removeClass('hidden');
      });      
    }  
    return false;
  });
};

lanaudiere_js.ui.collapsablePanelsInit = function(selector)
{
  $(' a.collapser', selector).bind('click', function(){
    var target = $(this).attr('rel');
    var params_hide = { height: "0px", opacity: 0 };
    var params_show = { height: "100%", opacity: 1 };
        
    if(!$(this).hasClass('hidden'))
    {
      $(this).addClass('hidden');
      $(target).animate(params_hide, 500, function(){
        $(this).css({display: 'none'});
      });
    }
    else
    {
      $(this).removeClass('hidden');
      $(target).animate(params_show, 1000, function(){
        $(this).css({display: 'block'});
      });
    }
		Cufon.refresh();		
    return false;
  });
};

lanaudiere_js.ui.pagerInit = function(selector, target)
{
  // caroussel width calculation
  var slider_width = 0;
  var slider_unit = 0;
  $('#pager_slider_wrapper ul li', selector).each(function() {
    slider_width = slider_width + $(this).outerWidth();
    slider_unit = 2 * $(this).outerWidth();
  });  
  $(' #pager_slider_wrapper ul', selector).css({width: slider_width});
  
  // prev / next binding  
  $('.pager a.controls', selector).bind('click', function(){
    var target_elem = $(' #pager_slider_wrapper ul', selector);
    var parent_elem = target_elem.closest('.pager_slider');
    var curr_elem = $(this);
    var curr_position = target_elem.position();
    
    if (curr_elem.is('.next'))
    {
      var new_position = curr_position.left - slider_unit;
      if( ( parent_elem.width() + (-1 * new_position)) <= target_elem.width() )
      {
        $(target_elem).animate({left: new_position}, 500, function(){
          $('.pager a.controls.prev', selector).css({visibility: 'visible'});
          if( ( parent_elem.width() + (-1 * new_position)) <= target_elem.width() )
            curr_elem.css({visibility: 'hidden'});
        });
      }
      else
        curr_elem.css({visibility: 'hidden'});
      
    }
    else if (curr_elem.is('.prev'))
    {
      var new_position = curr_position.left + slider_unit;     
      if( new_position <= 0 )
      {
        $(target_elem).animate({left: new_position}, 500, function(){
          $('.pager a.controls.next', selector).css({visibility: 'visible'});
          if( new_position <= 0 )
            curr_elem.css({visibility: 'hidden'});
        });
      }
      else
        curr_elem.css({visibility: 'hidden'});
    }
    return false;
  });
  
  // pager item
  $('.pager ul li a:not(.controls)', selector).bind('click', function(){
    var curr_elem = $(this);
    if (!curr_elem.is('.selected') && !curr_elem.is('.selected_next'))    
    {
      window.clearInterval(lanaudiere_js.ui.timerSlideshow);     
    }
    else if (curr_elem.is('.selected') || !curr_elem.length)
    {
      return false;
    }  
    
    var next_selected_li =  $(this).parent().next();
    var target_container = curr_elem.attr('rel');
    $(' .pager ul li a', selector).removeClass('selected').removeClass('selected_next');
    
    next_selected_li.find('a').addClass('selected_next');    
    if(!next_selected_li.length)
      $(' .pager ul li a', selector).eq(0).addClass('selected_next');
      
    curr_elem.addClass('selected');
    $(target).hide().removeClass('selected');
    
    $(target_container).fadeIn().addClass('selected');
    return false;
  }); 
  
  lanaudiere_js.ui.timerSlideshow = window.setInterval("$('"+selector+" .pager ul li a.selected_next:not(.controls):not(.slideshow_disabled)').trigger('click')", 5000);
  
};

lanaudiere_js.ui.favoritesInit = function()
{
  $('.js-addfav a').live('click', function() {
    var link = $(this);
    var slug = link.attr('rel');
    heap.api.lan.favorites.add(function(response){
      if (response.type != heap.SUCCESS) {
        alert(response.msg);
        return false;
      }
      if (window.lan_reload_on_fav_action) {
        location.reload();
        return false;
      }
      //link.parent().remove();
      link.parent().hide().siblings('.js-removefav').show();
      var num_span = $('.js-favnum');
      var num = parseInt(num_span.eq(0).text());
      ++num;
      num_span.text(num + " item" + (num > 1 ? "s" : ""));
      return true;
    }, { slug : slug });
    return false;
  });
  $('.js-removefav a').live('click', function() {
    var link = $(this);
    var slug = link.attr('rel');
    heap.api.lan.favorites.remove(function(response){
      if (response.type != heap.SUCCESS) {
        alert(response.msg);
        return false;
      }
      if (window.lan_reload_on_fav_action) {
        location.reload();
        return false;
      }
      //link.parent().remove();
      link.parent().hide().siblings('.js-addfav').show();
      var num_span = $('.js-favnum');
      var num = parseInt(num_span.eq(0).text());
      --num;
      num_span.text(num + " item" + (num > 1 ? "s" : ""));
      return true;
    }, { slug : slug });
    return false;
  });
};


lanaudiere_js.ui.menu = function(elem)
{
  var container = $('ul',elem).eq(0);
  var $lis = $(' > li', container);
	var params_hide = {};
  $('.sub', $lis).css({display: 'none'});
  for(var i = 0; i < $lis.length; i++)
  {
    var $li = $($lis[i]);
    $li.bind('mouseenter', function(e){ 
      var $submenu = $('.sub', this);
      if($submenu.length) 
        $submenu.css({display: 'block'});
				//$submenu.css({display: 'block', opacity: 1});
    }).bind('mouseleave', function(e){
      var $submenu = $('.sub', this);
      if($submenu.length) 
        $submenu.animate(params_hide, 200, function(){ $(this).css({display: 'none'}); });
    });		
  }	
};

lanaudiere_js.ui.contentToolboxInit = function()
{
  /* split list items in 2 columns */
  $('ul.splitcol').each(function() {
	  if($(this).is("ol")) { var ordered = true; }
	  var colsize = Math.round($(this).children("li").size() / 2);
	  $(this).children("li").each(function(i) {
	  	if (i>=colsize) { $(this).addClass('right_col'); }
	  });
	  if(ordered) {
	  	$(this).children('.right_col').insertAfter(this).wrapAll('<ol class="splitcol" start="' + (colsize+1) + '"></ol>').removeClass("right_col");
	  } else {
	  	$(this).children('.right_col').insertAfter(this).wrapAll('<ul class="splitcol"></ul>').removeAttr("class");
	  }
  });
  
};


/***********************************************************
*
* FORMS
*
***********************************************************/

lanaudiere_js.forms.showErrors = function(errors)
{    
  var params_hide = { height: "0px", opacity: 0 };
  var params_show = { height: "22px", opacity: 1 };
    
  for (var i in errors) {  
    $('#e_i'+i).animate(params_show, 200, function(){  });
    $('#i'+i).addClass('error_field');    
  }
  
  $('.error_field').bind('focus', function(){
    $(this).removeClass('error_field'); 
    $('#e_'+$(this).attr('id')+'').animate(params_hide, 200, function(){ });
  });
};

lanaudiere_js.forms.initToggleInformations = function()
{
  $('.same_coords').bind('click', function(){
    var checked = $(this).attr('checked');
    var target = $($(this).val());
    if(target.length)
    {
      if(checked)
        target.css({display: 'none'});
      else
        target.css({display: 'block'});
    }
    return true;
  });
}

/***********************************************************
*
* SEARCH
*
***********************************************************/

lanaudiere_js.search = function(params)
{
  this.params = params.get_params; //Required
  this.url = params.url; //Required
  this.ajax_target = params.ajax_target; //Required
  this.filters = params.filters; //Required
  this.on_reload = params.on_reload; //Optional
  this.setup();
};

lanaudiere_js.search.prototype.setup = function()
{
  var that = this;
  //Action for the Find button; handles all filters in the horizontal block at the top
  $('.js-searchsubmit').bind('click', function() {
    var keywords = $('#search-keywords').val();
    that.setParam('keywords', (keywords ? keywords : null));
    
    var city = $('#search-city').val();
    that.setParam('city', (city ? city : null));
    
    var radius = $('#search-radius').val();
    that.setParam('radius', (radius ? radius : null));
    
    var importance = $('#search-importance').val();
    that.setParam('importance', (importance ? importance : null));
    
    var start_date = $('#search-startdate').val();
    that.setParam('start_date', (start_date ? start_date : null));
    
    var end_date = $('#search-enddate').val();
    that.setParam('end_date', (end_date ? end_date : null));
    
    that.reload();
    return false;
  });
  //Action for the sort dropdown box
  $('.js-searchsort').live('change', function() {
    var sort = $(this).val();
    that.setParam('sort', (sort ? sort : null));
    that.reload();
  });
  //Action for the "check all" link in a filter group block
  $('.js-checkall').bind('click', function() {
    var rel = $(this).attr('rel');
    var filters = rel.split(",");
    
    for(var i=0;i<filters.length;i++) {
      var filter = filters[i];
      $('#'+filter).attr('checked', 'checked');
      that.setParam(filter, 1);
    }
    
    that.reload();
  });
  //Action for the "uncheck all" link in a filter group block
  $('.js-uncheckall').bind('click', function() {
    var rel = $(this).attr('rel');
    var filters = rel.split(",");
    
    for(var i=0;i<filters.length;i++) {
      var filter = filters[i];
      $('#'+filter).removeAttr('checked');
      that.setParam(filter, null);
    }
    
    that.reload();
  });
  //Action for an individual checkbox in a filter group block
  $('.js-searchtoggle').bind('change', function() {
    var name = $(this).attr('name');
    var checked = $(this).attr('checked');
    that.setParam('page', 1);
    return that.filterClick(name, checked);
  });
  //Action for a pager click
  $('.js-pager').live('click', function() {
    var page_num = $(this).attr('rel');
    that.setParam('page', page_num);
    that.reload();
    return false;
  });
};

lanaudiere_js.search.prototype.filterClick = function(name, checked, descr)
{
  var descr = this.getDescr(name);
  if (descr.mode == 'reset')
  {
    this.uncheckRelated(name);
    $('#'+name).attr('checked', 'checked');
  }
  else if (descr.mode == 'select')
  {
    this.uncheckRelated(name);
    this.setParam(name, (checked ? 1 : null));
  }
  else
  {
    this.updateReset(name);
    this.updateSelect(name);
    this.setParam(name, (checked ? 1 : null));
  }
  this.reload();
};

lanaudiere_js.search.prototype.getDescr = function(filter_name)
{
  for (var grp in this.filters)
  {
    if (!this.filters[grp][filter_name]) continue;
    return this.filters[grp][filter_name];
  }
};

lanaudiere_js.search.prototype.uncheckRelated = function(filter_name)
{
  for (var grp in this.filters)
  {
    if (!this.filters[grp][filter_name]) continue;
    for (var fname in this.filters[grp])
    {
      if (fname == filter_name) continue;
      $('#'+fname).removeAttr('checked');
      this.setParam(fname, null);
    }
  }
};

lanaudiere_js.search.prototype.updateReset = function(filter_name)
{
  var shouldCheck = true;
  var resetname = null;
  for (var grp in this.filters)
  {
    if (!this.filters[grp][filter_name]) continue;
    for (var fname in this.filters[grp])
    {
      if (this.filters[grp][fname].mode == 'reset') {
        resetname = fname;
        continue;
      }
      if ($('#'+fname).attr('checked')) shouldCheck = false;
    }
  }
  if (shouldCheck) $('#'+resetname).attr('checked', 'checked');
  else $('#'+resetname).removeAttr('checked');
};

lanaudiere_js.search.prototype.updateSelect = function(filter_name)
{
  var checked = $('#'+filter_name).attr('checked');
  var affected_selects = [];
  var others_are_checked = checked ? true : false;
  for (var grp in this.filters)
  {
    if (!this.filters[grp][filter_name]) continue;
    for (var fname in this.filters[grp])
    {
      if (this.filters[grp][fname].mode == 'select') {
        affected_selects.push(fname);
      } else if (fname != filter_name && $('#'+fname).attr('checked')) {
        others_are_checked = true;
      }
    }
  }
  for (var i=0; i<affected_selects.length; i++)
  {
    var fname = affected_selects[i];
    if (others_are_checked)
    {
      $('#'+fname).removeAttr('checked');
      this.setParam(fname, null);
    }
    else
    {
      $('#'+fname).attr('checked', 'checked');
      this.setParam(fname, 1);
    }
  }
};

lanaudiere_js.search.prototype.setParam = function(key, value)
{
  if (value == null) 
    delete this.params[key];
  else
    this.params[key] = value;
  if (key != 'page') this.params['page'] = 1;
};

lanaudiere_js.search.prototype.reload = function()
{
  this.params.ajax = 1;
  var that = this;
  $.ajax({
     dataType : 'html', 
     url : this.url, 
     data : this.params, 
     type: 'POST', 
     error : function(request, textStatus, errorThrown)
     {
       alert(heap.translate('err_ko'));
     }, 
     success : function(response)
     {
       $(that.ajax_target).html(response);
       window.scrollTo(0,$("#resultats").offset().top);
       if (that.on_reload) that.on_reload();
     }
   });
};

/* for each '.submit_itinerary' dom element, bind window.open action to google */
lanaudiere_js.ui.gMapItineraryInit = function()
{
	$(".submit_itinerary").click(function() {
		var string = $(this).prev().val();
		if (string == "") return false;
		var lang = heap.config.language;
		var ll = $(this).children().attr("rel");
		var urlGmapDir = "http://maps.google.ca/maps";
		urlGmapDir += "?hl=" + lang;
		urlGmapDir += "&saddr=" + escape(string);
		urlGmapDir += "&daddr=" + ll;
		window.open(urlGmapDir, '_blank');
		return false;
	});
};

/* tooltip management
	bind rollover event on element,
	show next() div
*/
lanaudiere_js.ui.tooltipInit = function(o)
{
	o.each(function() {
		
		// writes tooltip dom element
		$(this).parent().append('<div class="tooltip"><div class="tooltip_content">'+$(this).attr("title")+'</div><div class="tooltip_pointer"></div></div>');
		$(this).css("cursor", "pointer");
		$(this).attr("title", "");
				
		var tt = $(this).next();
		$(this).hover(function(){
			$(this).addClass('over');
			tt.fadeIn('fast');
		}, function(){
			tt.fadeOut('fast');
		});
  });
};

/* placeholder for any post-loaded DOM element display finetuning
 * when we want to limitate markup (e.g. wysiwyg editor)
 * ex.: add class to any <h4> immediately followed by <ul> */
lanaudiere_js.ui.adjustDisplay = function()
{
  $('ul').prev('h4').addClass('section');
		
	$("li a[href$='pdf']").parent().addClass("pdf"); // adds special icon based on href extension
	//$("li a[href$='png'][href$='gif'][href$='jpg']").parent().addClass("bitmap");
		
	$("#page_layout_right ul li a[href^='http'], .main_body ul li a[href^='http']")
		.not("a[href^='http:\/\/"+window.location.hostname+"']")
		.parent()
		.addClass("external");
	
  $("a[href$='mp3']").each(function(){
    
    $(this).parent().html(
      '<div class="flashmp3_container" id="' + 'iflashmp3' + '">'+
      '<object type="application/x-shockwave-flash" data="'+heap.urlmap['static']+'/swf/playermp3.swf" id="audioplayer1" width="290" height="24">'+
        '<param name="movie" value="'+heap.urlmap['static']+'/swf/playermp3.swf">'+
        '<param name="FlashVars" value="playerID=1&amp;soundFile='+$(this).attr('href')+'">'+
        '<param name="quality" value="high">'+
        '<param name="menu" value="false">'+
        '<param name="wmode" value="transparent">'+
      '</object>'+
      '</div>'+
      '<a class="download_mp3" href="'+$(this).attr('href')+'" target="_blank">'+heap.labels['default']['download_mp3']+'</a>'
    );
    
  }); 
  
	/* manage toggling link */
	
	$('.toggle').each(function() {
		var n = $(this).next();
	  $(this).css("cursor", "pointer");
		n.hide();
	
		$(this).click(function() {
	 		// major issue with slideToggle() and toggle()
			// does not work for some reason. try it manually
			if (n.css('display') == 'none') {
				n.slideDown(300);
				$(this).addClass("toggle_open");
			} else {
				$(this).removeClass("toggle_open");
				n.hide();
			}
			
		});
	});
	
	
};