var quickLinksReveal = null;
var lastAnch = null;
var searchControl;
var searchComplete = false;

/* on load init */
Event.observe(window, 'load', function() {
  /* -------------------------------------------------------------------------- Quick links --- */
  if ($('QL_list')) {
    quickLinksReveal = new fx.Height($('QL_list') , {
      duration: 500,
      onComplete: function() {
        if (this.element.offsetHeight == 0) {
          $('quickLinks').className = 'closed';
        } else {
          $('quickLinks').className = 'open';
        }
      }
    });

    $('QL_trigger').onclick = function() {
      quickLinksReveal.toggle();
    }
  }

  /* -------------------------------------------------------------------------- Init navigation --- */
  initNavigation();
  
  /* -------------------------------------------------------------------------- FM Corners --- */
  intiFM9Slice('loading', _BASE_HREF_+"images/corners/cornerset_lb_corners.png", 16, 16, _BASE_HREF_+"images/corners/cornerset_lb_vert.png", 16, _BASE_HREF_+"images/corners/cornerset_lb_horiz.png", 16, {
    "marginOffset":-4,
    "dontPosition":true
  });
  initFMCorners('treated', _BASE_HREF_+"images/corners/gfx_corners_travel.png", 8, 8);

  /* -------------------------------------------------------------------------- sIFR --- */
  if(typeof sIFR == "function"){
    sIFR.replaceElement(named({
      sSelector:"#insuranceSelector h3, #insuranceSelector h5, #insuranceSelector h6, #InsuranceContainer .standardContent h3, #InsuranceContainer .standardContent h5#progressHeading, #InsuranceContainer .standardContent #quoteNumber h5",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#FFFFFF",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:0,
      offsetTop:0,
      offsetLeft:0
    }));
    sIFR.replaceElement(named({
      sSelector:".standardContent h3,.standardContent h5, .panels .themeParks .heading, #careersInsurance h4, #careersLimited h4",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#004990",
      sBgColor:"#FFFFFF",
      sWmode:"transparent"
    }));    
    sIFR.replaceElement(named({
      sSelector:".promotionHeading_silverSavers, .iPadLandingContainer h6, #iPadEntryForm h6",
      sFlashSrc:_BASE_HREF_+"assets/metroBlack.swf",
      sColor:"#004990",
      sBgColor:"#FFFFFF",
      sWmode:"transparent"
    }));//3E92C3
    sIFR.replaceElement(named({
      sSelector:".membershipLanding .inner h3, .becomeLanding .inner h3",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#EC1527",
      sWmode:"transparent"
    }));
    sIFR.replaceElement(named({
      sSelector:".promotionLanding_silverSavers h2, .iPadLandingContainer h1, #iPadEntryForm h1, .becomeLanding .inner h5, .membershipLanding .inner h5",
      sFlashSrc:_BASE_HREF_+"assets/metroMedium.swf",
      sColor:"#000000",
      sWmode:"transparent"
    }));
     sIFR.replaceElement(named({
      sSelector:".roadsideLanding .inner h3,.roadsideLanding .inner h5",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#FFFFFF",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:0,
      offsetTop:0,
      offsetLeft:0
    }));
    sIFR.replaceElement(named({
      sSelector:"h3.dyn",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#004990",
      sBgColor:"#FFFFFF",
      sWmode:"transparent"
    }));
    sIFR.replaceElement(named({
      sSelector:"h3.groupToursIntroHeading, h3.tippingWelcome",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#ffffff",
      sWmode:"transparent",
      sCase:"upper"
    }));
    sIFR.replaceElement(named({
      sSelector:"h4.groupToursHeading",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#ffffff",
      sWmode:"transparent",
      sCase:"upper",
      nPaddingTop:12,
      nPaddingBottom:24
    }));
    sIFR.replaceElement(named({
      sSelector:".cmsPanel h3",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#004990",
      sBgColor:"#FFFFFF",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:0,
      offsetTop:0,
      offsetLeft:0
    }));
    sIFR.replaceElement(named({
      sSelector:".testimonialList h6",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#333333",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:0,
      offsetTop:0,
      offsetLeft:0
    }));
  }
  
  /* -------------------------------------------------------------------------- Roadside Comparison --- */
  if ( $('roadsideComparison')) {
    
    var myAccordion = new fx.Accordion($('roadsideComparison').select("dt"), $('roadsideComparison').select("dd"), {
      onActive: function(toggler, element){
        toggler.addClassName("active");
      },
      onBackground: function(toggler, element){
        toggler.removeClassName("active");
      }
    });
    var count = -1;
    $('roadsideComparison').select("dt").each(function(elm){
      count++;
      var k = count;
      elm.onmouseover = function() {
        myAccordion.showThisHideOpen(k);
      }
    });
  /*
        pricingReveal = new fx.Height($('pricingA') , {
            duration: 500,
            onComplete: function() {
                if (this.element.offsetHeight == 0) {
                    $('pricingATrig').removeClassName('active');
                } else {
                    $('pricingATrig').addClassName('active');
                }
            }
        });

        $('pricingATrig').onclick = function() {
            pricingReveal.toggle();
        }

        pricingUReveal = new fx.Height($('pricingU') , {
            duration: 500,
            onComplete: function() {
                if (this.element.offsetHeight == 0) {
                    $('pricingUTrig').removeClassName('active');
                } else {
                    $('pricingUTrig').addClassName('active');
                }
            }
        });

        $('pricingUTrig').onclick = function() {
            pricingUReveal.toggle();
        }

        $('pricingU').style.height = "0px";
        $('pricingA').style.height = "0px";
    */
  }
}, false);

/* -------------------------------------------------------------------------- Init navigation --- */
function initNavigation() {
  ($$('#siteNavigation > ul:not(.subNav) > li')).each( // could optomize here if required - jm
    function(elm) {
      elm.observe('mouseover', function() {
        elm.addClassName('hover')
      });
      elm.observe('mouseout',  function() {
        elm.removeClassName('hover')
      });
    }
    );
}


/* -------------------------------------------------------------------------- Close LB countdown--- */
function closeLBCountdown() {
  this.count = 6;
  this.id = 0;

  $('closeCount').innerHTML = this.count;
    
  this.tick = function(self) {
    self.count--;
    if (self.count > 0) {
      $('closeCount').innerHTML = self.count;
    } else {
      window.clearInterval(self.id);
      if ($('lbContent')) lightbox.prototype.deactivate();
    }
  }
    
  this.id = window.setInterval(this.tick, 1000, this);
}
//document.observe("fm:submitted", function(event) { new closeLBCountdown(); });

/* -------------------------------------------------------------------------- Lightbox Overrides --- */
lightbox.prototype.loadInfo = function() {
  var myAjax = new Ajax.Request(
    this.content,
    {
      method: 'post',
      parameters: "ajaxContext=true",
      onComplete: this.processInfo.bindAsEventListener(this)
      }
    );
}

lightbox.prototype.processInfo = (function(self) {
  return function(response) {
    response.responseText =
    '<div class="lb_container">'+
    '<img class="gfxCorner" src="'+_BASE_HREF_+'images/gfx_lb_corner.gif" width="3" height="3" alt="" /><a href="#" class="btn close lbAction" rel="deactivate"><img class="" src="'+_BASE_HREF_+'images/btn_lb_close.gif" width="29" height="46" alt="close" title="close" /></a>' +
    response.responseText +
    '</div>';
    (self.bind(lightbox.prototype))(response);

  }
  })(lightbox.prototype.processInfo);


lightbox.prototype.prepareIE = function(height, overflow) {
  bod = document.getElementsByTagName('body')[0];
  //bod.style.height = height;
  bod.style.overflow = overflow;
  
  htm = document.getElementsByTagName('html')[0];
  //htm.style.height = height;
  htm.style.overflow = overflow;
};

/* -------------------------------------------------------------------------- Have Your Say Panel Switcher --- */
function showHaveYourSay(num) {
  $('hys_articles').className = 'articles show'+num;
  return false;
}
/* -------------------------------------------------------------------------- Ratings Controlls --- */
function hoverRating(self, num) {
  if ($(self).ancestors()[2].currentRating == undefined) return;
  if ($(self).ancestors()[2].setMode != undefined) return;
  $(self).ancestors()[2].className='ratings setMode rating'+num;
}
function setRating(self, num, aID) {
  if ($(self).ancestors()[2].currentRating == undefined) return;
  $(self).ancestors()[2].setMode = true;
  $('rating_'+aID).value = num;
  $(self).ancestors()[2].className='ratings setMode rating'+num;
  return false;
}
function setRatingsMode(self) {
  $(self).ancestors()[0].currentRating = 1;
  $(self).ancestors()[0].className='ratings setMode rating1';
  return false;
}

/* -------------------------------------------------------------------------- Google Maps integration. --- */
var map = null;
var geocoder = null;
var directions = null;
var centred = false;
  var centred = false;

function GInitialize(suppressDirections) {
  suppressDirections = (suppressDirections == null) ? false : suppressDirections;

  if (GBrowserIsCompatible()) {
    centred = false;
    map = new GMap2(document.getElementById("map_canvas"));
    var myLocLatLng = new GLatLng(-42.875, 147.35);
    geocoder = new GClientGeocoder();

    map.setCenter(myLocLatLng, 11);
    //map.addControl(new GSmallZoomControl());

    placeMarkers();

    if (!suppressDirections) {
      directionsPanel = document.getElementById("directions");
      directions = new GDirections(map, directionsPanel);
      GEvent.addListener(directions, "error", handleDirectionsError);
      GEvent.addListener(directions, "load", handleLoadDirections);

      applyFMCorners($('canvasWrapper'), _BASE_HREF_+"images/corners/gmap.gif", 8, 8, {
        "marginOffset":-1
      });
    }
  }
}

function handleLoadDirections() {
  document.getElementById('directionsControl').className += ' showDirections';
}

function handleDirectionsError() {
  alert("I'm sorry, we could not find your address, please ensure that you have included your suburb.");
  document.getElementById('addressFrom').focus();
}

function showMarkerWindow(address, marker) {
  html = getHTML(address);
  marker.openInfoWindowHtml(html);
}

function getHTML(address) {
  addressFrom = document.getElementById('addressFrom').value;
  temp = "<strong>" + address.title + ", " + address.fullAddress + "</strong><br/>";
  temp += "<a href=\"#\" onclick=\"drawDirections('" + addressFrom + "', '" + address.fullAddress + "');\">Get directions</a> from " + addressFrom + " to here";
  return temp;
}

function drawDirections(frm) {
  if (frm.addressFrom.value == '') {
    alert('Please enter your address');
    frm.addressFrom.focus();
  } else {
    directions.clear();
    directions.load(frm.addressFrom.value + " Tasmania Australia to " + frm.addressTo.value);
  }
}

function showDirectionsButton(id) {
  $('directions' + id).className = $('directions' + id).className.replace("hiddenDirectionsButton", "");
}

function showContactDetails(id) {
  document.getElementById('address' + id).className = '';
}

function closeDirections() {
  document.getElementById('directionsControl').className = '';
  directions.clear();
  placeMarkers();
  return false;
}

var placeMarkers = function () {} // placholder

/**
   * Put markers on Google Map using lookup of property address (callback for Geocode).
   */
function showAddress(address, pinUrl, aid, suppressDirections) {
  suppressDirections = (suppressDirections == null) ? false : suppressDirections;

  if (geocoder) {
    geocoder.getLatLng(
      address.fullAddress + ", Tasmania, Australia",
      function(point) {
        if (!point) {
        //window.status = address.fullAddress + " not found";
        //alert( address.fullAddress + " not found");
        } else {
          //alert( address.fullAddress + " found ??? "+aid+address);
          if (!suppressDirections) {
            showDirectionsButton(aid);
          }

          var marker = new GMarker(point, {
            title: address.title + ". " + address.fullAddress + "."
            });
          GEvent.addListener(marker, 'click', function() {
            //showContactDetails(aid);
            });

          map.addOverlay(marker);
          if (pinUrl != null && pinUrl != '') {
            marker.setImage(pinUrl);
          }

          GEvent.addListener(marker, "mouseover", function() {
            $('address' + aid).className = $('address' + aid).className+' hover';
          });

          GEvent.addListener(marker, "mouseout", function() {
            $('address' + aid).className = $('address' + aid).className.replace('hover', '');
          });

          if (!centred) { // centre on this result
            map.setCenter(point);
            centred = true;
          }
        }
      }
      );
  }
}

function openDirectionsInput(toAddress) {
  document.getElementById('addressTo').value = toAddress;
  document.getElementById('addressToContent').innerHTML = toAddress;
  document.getElementById('directionsControl').className = 'addressInput';
  return false;
}

// property location object
function propertyLocation(title, fullAddress) {
  this.title = title;
  this.fullAddress = fullAddress;
}

/**
   * Update the Google Map view-type button status.
   */
function setMap(anch, type) {
  map.setMapType(type);
  anch.className = 'current';

  if (lastAnch == null) {
    lastAnch = document.getElementById('defaultMapType');
  }
  lastAnch.className = '';
  lastAnch = anch;

  return false;
}
  
/* -------------------------------------------------------------------------- Poll - Complex --- */
function proccessComplex(self, pollCount, answerCount) {
  var parent = $(self.parentNode);
  var currentCount = 1;

  if ($F('fPoll_'+pollCount) == "") {
    $('fPoll_'+pollCount).value = answerCount;
  } else {
    currentCount = $F('fPoll_'+pollCount).split('|').length+1;
    $('fPoll_'+pollCount).value = $F('fPoll_'+pollCount)+'|'+answerCount;
  }
  parent.select('.count')[0].innerHTML = currentCount;
  parent.select('.check')[0].disabled = true;
  parent.className = "complex selected";
  parent.parentNode.parentNode.addClassName("touched");

  return false;
}

function clearComplex(elm) {
  elm.parentNode.select('input.check').each(function(inp){
    inp.checked = false;
    inp.parentNode.select('.count')[0].innerHTML = '';
    inp.parentNode.select('.check')[0].disabled = false;
    inp.parentNode.className = "complex";
  });
  elm.parentNode.parentNode.removeClassName("touched");
  elm.parentNode.select('.selections')[0].value = "";
  return false;
}


function submitComplex(elm) {
  var passed = true;
  elm.parentNode.select('input.check').each(function(inp){
    if (!inp.checked) {
      passed = false;
    }
  });
  if (!passed) {
    alert('You must order all possible answers before submitting');
    return false;
  }
  return true;
}


/**
 * Attaches an onclick event to each link with rel="external" that opens the
 * link in a new window.
 */
function initExternalLinks() {
  var as = document.getElementsByTagName("a");
  for (var i = 0; i < as.length; i++) {
    if (as[i].getAttribute("rel") == "external") {
      as[i].onclick = openNewWindow;
    }
  }

  function openNewWindow() {
    window.open(this.href);
    return false;
  }
}
Event.observe( window, 'load', initExternalLinks, false);

function printLB() {
  document.getElementsByTagName('body')[0].className = 'printLB'; 
  window.print();
}

function doSort(sortBy) {
  var frm = document.getElementById('fwSearch');

  var sortOrder = (frm.sortOrder.value == 'asc') ? 'desc' : 'asc';

  frm.sortOrder.value = sortOrder;
  frm.sortBy.value = sortBy;
  frm.submit();
}

function closeAnnouncement(fld, articleId) {
  fld.className += ' closed';

  var expire = new Date();
  expire.setFullYear(expire.getFullYear() + 1);
  saveCookie("readAnnouncement", articleId, expire);

  return false;
}

function gSearchInit() {
  // Create a search control
  searchControl = new google.search.SearchControl();

  // web search, open, alternate root
  var options = new google.search.SearcherOptions();
  options.setExpandMode(google.search.SearchControl.EXPAND_MODE_OPEN);
  options.setRoot(document.getElementById("search_results"));

  // Add in a WebSearch
  var webSearch = new google.search.WebSearch();
  webSearch.setUserDefinedLabel("RACT");
  webSearch.setSiteRestriction('www.ract.com.au');
  searchControl.addSearcher(webSearch, options);
/*
  options = new google.search.SearcherOptions();
  options.setExpandMode(google.search.SearchControl.EXPAND_MODE_CLOSED);
  options.setRoot(document.getElementById("search_results"));*/

  webSearch = new google.search.WebSearch();
  webSearch.setUserDefinedLabel("RACT Travel");
  webSearch.setSiteRestriction('www.travelworld.com.au/racthobart');
  searchControl.addSearcher(webSearch, options);

  webSearch = new google.search.WebSearch();
  webSearch.setUserDefinedLabel("RACT Applications");
  webSearch.setSiteRestriction('secure.ract.com.au');
  searchControl.addSearcher(webSearch, options);

  // attach "powered by Google" branding
  google.search.Search.getBranding(document.getElementById("branding"));
  
  searchControl.setSearchCompleteCallback(this, gSearchInit.prototype.OnSearchComplete);

  // tell the searcher to draw itself and tell it where to attach
  searchControl.draw(document.getElementById("siteSearch"));
}

gSearchInit.prototype.OnSearchComplete = function(sc, searcher) {
 if (!searchComplete) {
    searchComplete = true;
    var clrButton = document.createElement("a");
    clrButton.textContent = "clear";
    clrButton.setAttribute("href", "#");
    clrButton.className = "btnClearSearch";
    clrButton.onclick = function () { searchControl.clearAllResults(); $('siteSearch').removeChild(this); searchComplete = false; return false; };

    $('siteSearch').appendChild(clrButton);
  }
}

function validateIPadFrom() {
  if(($('inpEmail').value == '') && ($('inpPhone').value == '') && ($('inpHome').value == '') && ($('inpMobile').value == '')){
    alert('You must enter one of the following fields correctly before proceeding: \n\nMobile, Home, Work or Email');
    return false;
  } else {
    return validateForm(document.getElementById('iPadForm'));
  }
}