var quickLinksReveal = null;
var blogSummaryReveal = null;
var lastAnch = null;
var searchControl;
var searchComplete = false;
var didYouKnowIdx = 0;
var homeAdIdx = 0;

/* on load init */
Event.observe(window, 'load', function() {
    
  /* -------------------------------------------------------------------------- Init navigation --- */
  initNavigation();

  initialiseUpdateHomeAd();
  
  shellLinks();

  initContactForm();

  initialiseDidYouKnow();


  /* -------------------------------------------------------------------------- sIFR --- */
  initSiFR();

  /* -------------------------------------------------------------------------- AddThis --- */
  addthis.init();
  
  /* -------------------------------------------------------------------------- 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);
      }
    });
  }
}, 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')
      });
    }
    );
}

function initQuicklinks() {
  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();
      return false;
    }
  }
}


function initContactForm() {
  if (!$('contactF')) return;
  //$('contactF').removeClassName('expand').removeClassName('messageView');
  $('contactF').select('.btn.contactClose')[0].onclick = function() {
    toggleContactForm(false);
    return false;
  }
  $('contactF').select('.btn.moreFields')[0].onclick = function() {
    toggleContactForm(false);
    return false;
  }
  $('inpComment').onfocus = function() {
    if(!($('contactF').hasClassName('expand'))){
      toggleContactForm(true);
    }
    return false;
  }  
}

function toggleContactForm(openOnly) {
  var targetElm = $('contactF').select('.inner .expandedContact')[0];
  var targetElmComment = $('inpComment');
  var targetElmLabel = $('contactF').select('.messageLabel')[0];
  var contactFade = $('contactFade');
  var contactMore = $('contactMore');
  var contactTitle = $('contactTitle');
  var contactSendEmail = $('contactSendEmail');
  var messageLabel = $('messageLabel');

  if (!openOnly && $('contactF').hasClassName('expand')) {

    contactFade.setStyle({ 'display':'block', 'opacity':'0'});
    contactMore.setStyle({ 'display':'block', 'opacity':'0'});
    new Effect.Morph(contactSendEmail, { duration: 0.5, style: 'bottom: 40px' });
    new Effect.Morph(targetElm, {
      style: 'height: 0px',
      duration: 0.5,
      beforeStart: function() {
        new Effect.Morph(targetElmComment, { duration: 0.5, style: 'height: 1em' });
        targetElmLabel.setStyle({ display:'none' });
      },
      afterFinish: function() {
        new Effect.Fade(contactMore, {duration: 0.6, from: 0, to: 1 });
        new Effect.Morph(contactTitle, { style: 'color: #C6DDEB' });

        new Effect.Fade(contactFade, {
          duration: 0.4,
          from: 0,
          to: 1,
          afterFinish: function() {
            $('contactF').removeClassName('expand').removeClassName('messageView');
          }
        });
        
      }
    });
  } else {
    targetElmComment.setStyle({ 'display':'block', 'height':'1em' });
    var targetHeight = '213px';
    if ($('pageContainer').hasClassName('section-community_blog')) {
      targetHeight = '136px';
    }
    new Effect.Fade(contactMore, {duration: 0.2,
      from: 1,
      to:0,
      afterFinish: function() {
        new Effect.Fade(contactFade, {duration: 0.5, from: 1, to: 0});
        new Effect.Morph(contactTitle, { style: 'color: #004990' });
        new Effect.Morph(contactSendEmail, { duration: 0.5, style: 'bottom: 25px' });

        new Effect.Morph(targetElm, {
          duration: 0.5,
          style: 'height: ' + targetHeight,
          beforeStart: function() {
            new Effect.Morph(targetElmComment, { 
              style: 'height: 6em',
              duration: 0.3
            });
            targetElmLabel.setStyle({ display:'block' });
            $('contactF').addClassName('expand');
          }
        });
      }
    });

    
  }
}

function initialiseDidYouKnow() {
  homeAdIdx ++;

  $$("#dykRef div").each( function(elm){
    if(!elm.hasClassName('active')){
      elm.setStyle("display: none");
    }
  });

  _TIMEOUT = setTimeout("updateDidYouKnow()", 6000);
}

function updateDidYouKnow() {
  if ($('dykRef')) {
    var dykList = $('dykRef').select('div');
    for (var i = 0; i < dykList.length; i++) {
      if (dykList[i].hasClassName('active')) {
        dykList[i].visualEffect('Fade', {duration:2, afterFinish: function() {
          dykList[i].removeClassName('active');
          dykList[didYouKnowIdx].addClassName('active');
          dykList[didYouKnowIdx].visualEffect('Appear', {duration:2, from:0, to:1.0});
        }});
        break;
      }
    }
    didYouKnowIdx++;

    if (didYouKnowIdx >= dykList.length) {
      didYouKnowIdx = 0;
    }

    setTimeout("updateDidYouKnow()", 6000);
  }
}

function initSiFR() {
  if(typeof sIFR == "function"){
    sIFR.replaceElement(named({
      sSelector:"#insuranceSelector h3, .becomeLanding .inner h3, #InsuranceContainer .standardContent h3, #InsuranceContainer .standardContent h5#progressHeading, #InsuranceContainer .standardContent #quoteNumber, .roadsideLanding .inner h3, .tippingLanding h3, .benefitsLanding .inner h3, .branchesLanding .inner h3, .fuelwatchLanding h3",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#FFFFFF",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:0,
      offsetTop:0,
      offsetLeft:0
    }));
    sIFR.replaceElement(named({
      sSelector:"#insuranceSelector h6, .sycsLanding h3",
      sFlashSrc:_BASE_HREF_+"assets/metroBlack.swf",
      sColor:"#FFFFFF",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:0,
      offsetTop:0,
      offsetLeft:0
    }));
    sIFR.replaceElement(named({
      sSelector:".promotionHeading_silverSavers, .iPadLandingContainer h6, #iPadEntryForm h6, #batteryHeader h2",
      sFlashSrc:_BASE_HREF_+"assets/metroBlack.swf",
      sColor:"#004990",
      sBgColor:"#FFFFFF",
      sWmode:"transparent"
    }));
    sIFR.replaceElement(named({
      sSelector:".membershipLanding .inner h3",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#EC1527",
      sWmode:"transparent"
    }));
    sIFR.replaceElement(named({
      sSelector:".promotionLanding_silverSavers h2, .iPadLandingContainer h1, #iPadEntryForm h1, h2#pageTitle",
      sFlashSrc:_BASE_HREF_+"assets/metroMedium.swf",
      sColor:"#000000",
      sWmode:"transparent"
    }));
    sIFR.replaceElement(named({
      sSelector:".newHouseHeader h1, .winMazdaHeader h1",
      sFlashSrc:_BASE_HREF_+"assets/metroBlack.swf",
      sColor:"#ffffff",
      sWmode:"transparent"
    }));
    sIFR.replaceElement(named({
      sSelector:"#sideNavigation h2",
      sFlashSrc:_BASE_HREF_+"assets/metroMedium.swf",
      sColor:"#004990",
      sWmode:"transparent",
      nPaddingTop:0,
      nPaddingBottom:12
    }));
    sIFR.replaceElement(named({
      sSelector:"h3.dyn",
      sFlashSrc:_BASE_HREF_+"assets/headings.swf",
      sColor:"#004990",
      sBgColor:"#FFFFFF",
      sWmode:"transparent"
    }));
  }
}

/* -------------------------------------------------------------------------- Have Your Say Panel Switcher --- */
function showHaveYourSay(num) {
  $('hys_articles').className = 'articles show'+num;
  return false;
}
/* -------------------------------------------------------------------------- Ratings Controls --- */
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 gMap = null;
var gMapGeocoder = null;
var gMapDirections = null;
var gMapBounds = null;
var gMapLargeIcon = null;
var gMapDefaultLocation = null;

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

  if (GBrowserIsCompatible()) {
    gMap = new GMap2(document.getElementById("map_canvas"));
    gMapGeocoder = new GClientGeocoder();
    gMapBounds = new GLatLngBounds();
    gMapDefaultLocation = new GLatLng(-42.875, 147.35);
    gMap.setCenter(gMapDefaultLocation, 11);

    gMapLargeIcon = new GIcon(G_DEFAULT_ICON);
    gMapLargeIcon.iconSize = new GSize(34, 54);
    gMapLargeIcon.iconAnchor = new GPoint(18, 49);
    gMapLargeIcon.infoWindowAnchor = new GPoint(34, 2);
    gMapLargeIcon.imageMap = [0,0,34,0,34,40,0,40];

    placeMarkers();

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

function resetGMap() {
  gMap.clearOverlays();
  gMapBounds = new GLatLngBounds();
}

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 {
    gMapDirections.clear();
    gMapDirections.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 = '';
  gMapDirections.clear();
  placeMarkers();
  return false;
}

var placeMarkers = function () {} // placholder

/**
 * Put markers on Google Map using lookup of property address (callback for Geocode).
 * @param address propertyLocation object
 * @param params optional parameters
 * - pinUrl
 * - aid
 * - suppressDirections
 * - centreMap
 * - zoomLevelOverride
 */
function showAddress(address, params) {
  params['aid'] = (params['aid'] == null ? 0 : params['aid']);
  params['suppressDirections'] = (params['suppressDirections'] == null) ? false : params['suppressDirections'];
  params['centreMap'] = (params['centreMap'] == null ? true : params['centreMap']);

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

          var markerOptions = {
            title: address.title + ". " + address.fullAddress + "."
          }
          
          if (params['pinUrl'] != null && params['pinUrl'] != '') {
            var myIcon;
            if (params['pinUrl'].indexOf('centreLocation') != -1) {
              myIcon = new GIcon(gMapLargeIcon, params['pinUrl']);
            } else {
              myIcon = new GIcon(G_DEFAULT_ICON, params['pinUrl']);
            }
            markerOptions['icon'] = myIcon;
          }

          var marker = new GMarker(point, markerOptions);
          GEvent.addListener(marker, 'click', function() {
            //showContactDetails(aid);
          });

          gMap.addOverlay(marker);
          gMapBounds.extend(point);

          GEvent.addListener(marker, "mouseover", function() {
            if ($('address' + params['aid']) != null) {
              $('address' + params['aid']).className = $('address' + params['aid']).className+' hover';
            }
          });

          GEvent.addListener(marker, "mouseout", function() {
            if ($('address' + params['aid']) != null) {
              $('address' + params['aid']).className = $('address' + params['aid']).className.replace('hover', '');
            }
          });

          if (params['centreMap']) {
            if (params['zoomLevelOverride'] == null) {
              gMap.setZoom(gMap.getBoundsZoomLevel(gMapBounds));
            } else {
              gMap.setZoom(params['zoomLevelOverride']);
            }
            gMap.setCenter(gMapBounds.getCenter());
          }
        }
      }
    );
  }
}

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) {
  gMap.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() {
  if (!$("siteSearch")) { return; }
  
  // 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($("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);

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

  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 Accommodation");
  webSearch.setSiteRestriction('accommodation.ract.com.au');
  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($("branding"));
  
  searchControl.setSearchCompleteCallback(this, gSearchInit.prototype.OnSearchComplete);
  searchControl.setLinkTarget(google.search.Search.LINK_TARGET_SELF);

  // tell the searcher to draw itself and tell it where to attach
  searchControl.draw($("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();$('search_results').removeClassName('gsc-resultsbox-visible');$('search_results').addClassName('gsc-resultsbox-invisible');$('siteSearch').removeChild(this);searchComplete = false;return false;};

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

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

function validatePhoneForm(frm) {
  if(($('inpWork').value == '') && ($('inpHome').value == '') && ($('inpMobile').value == '')){
    alert('You must enter one of the following fields correctly before proceeding: \n\nMobile, Home or Work phone');
    return false;
  } else {
    return validateForm(frm);
  }
}

var myLightWindow = null;
function initLightWindow() {
  myLightWindow = new lightwindow({
      contentOffsetMargin: {
            width: 60
      },
      overlay: {
              opacity: 0.7,
              image: assetsPath + 'fmlightwindow/images/bg_lightwindow.png'
      }
  });
}

function splitTime(fldId) {
  if ($(fldId).value.indexOf(' ') != -1 && $(fldId).value.indexOf(':') != -1) {
    var timeParts = $(fldId).value.split(':');
    $('selCallbackHour').value = timeParts[0];
    $('selCallbackMinute').value = timeParts[1];
  }

}

function checkCallback(fld) {
  $('inpTime').disabled = true;
  $('inpDate').disabled = true;
  $('callbackInner').removeClassName('showCallback');
  if (fld.selectedIndex == fld.options.length - 1) {
    $('inpTime').disabled = false;
    $('inpDate').disabled = false;
    $('callbackInner').addClassName('showCallback');
  }
}

function setOffsetFromGMT() {
  $('callbackF').gmtOffset.value = (new Date ()).getTimezoneOffset() * -60;
}

var IMMEDIATELY = 1;
var IN30MINUTES = 2;
var IN60MINUTES = 3;
var IN90MINUTES = 4;
var LATER       = 5;

function validateCallbackForm(frm) {
  if (!$('callbackF')) {
    submitform = 0;
    return validateForm(frm);
  }

  setOffsetFromGMT();

  if ($('callbackF').mode.value == LATER) {
    if ($('callbackF').callbackDate.value == '') {
      alert('Please nominate a callback Date & Time');
      return false;
    } else {
      if ($('callbackF').timeZone.value == '-1') {
        alert('Please select a Time Zone');
        return false;
      }

      var parts = $('callbackF').callbackDate.value.split(/-/);
      var day = parts[0];
      var month = parts[1];
      var year = parts[2];
      var dateObject = new Date();

      dateObject.setUTCMonth(month - 1); // month
      dateObject.setUTCDate(day); // day
      dateObject.setUTCFullYear(year);

      if ($('callbackF').selCallbackHour.value != 0) {
        dateObject.setUTCHours($('callbackF').selCallbackHour.value, $('callbackF').selCallbackMinute.value, 0, 0);
      }
    }

    $('callbackF').scheduletime.value = (dateObject.getTime() / 1000);
  } else {
    $('callbackF').scheduletime.value = (new Date ()).getTimezoneOffset() * -60;
  }

  submitform = 0;
  return validateForm(frm);
}

//window load function
Event.observe(window, 'load', function() {
  new toolTip('tooltip', 'tooltip');
});

var toolTip = Class.create({
  initialize: function(actionClass, containerId) {
    this.tipMarkup(containerId);
    this.linkTip(actionClass);

  },
  tipMarkup: function(containerId) {
    this.toolTip = new Element('span', {
      id: containerId,
      style: 'display: none'
    });
    $$('body')[0].insert({
      bottom: this.toolTip
    });
  },
  linkTip: function(actionClass){
    $$('.' + actionClass).each(function(elm){
      if (elm.title != '' && elm.title != null) {
        Event.observe(elm, 'mouseenter', this.showToolTip.bind(this));
        Event.observe(elm, 'mouseleave', this.hideToolTip.bind(this));
      }
    }.bind(this));
  },
  showToolTip: function(e) {

    elm = Event.element(e).up('a');
    if(elm == undefined) {
      elm = Event.element(e);
    } //IE bug fix
    this.toolTip.update(elm.title);

    Event.observe(elm, 'mousemove', function(e) {

    this.toolTip.setStyle({
      position: 'absolute',
      zindex: '300',
      top: Event.pointerY(e) + 'px',
      left: Event.pointerX(e) + 15 + 'px'
    });

    }.bind(this));

    this.toolTip.show();
  },
  hideToolTip: function() {
    this.toolTip.hide();
  }
});

function launchBlog(e) {
  // get around IE behaviour
  if (e.srcElement) {
    if (e.srcElement.nodeName != 'DIV') {
      return;
    }
  }
  location.href = $$('#siteNavigation .subNav .news .btn')[0].href;
}

function ping() {
  var req = newXMLHttpRequest();

  var handlerFunction = getReadyStateHandler(req, function() {setTimeout("ping()", 1000*60*5);});
  req.onreadystatechange = handlerFunction;
  req.open("POST", _BASE_HREF_ + "ping", true);
  req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  req.send("ping=1");

}

var shell;
function shellLinks() {
  ($$('a[rel="shell"]')).each(function(elm) {
    elm.onclick = function() {
      shell =  window.open(elm.href,'_homeContents','width=1005,height=692,resizable=0,dependent=0,scrollbars=1',toolbar=0,status=0);
      //checkShellStatus();
      return false;
    };
  });
}


/**
 * Cycle home page ads and associated pips.
 */
var _TIMEOUT = null;
var pipsRequireUpdate = true;

function initialiseUpdateHomeAd() {
  homeAdIdx ++;
  
  $$("#homeAdRef .panelContainer").each( function(elm){
    if(!elm.hasClassName('active')){
      elm.setStyle("display: none");
    }
  });
  
  _TIMEOUT = setTimeout("updateHomeAd()", 6000);
}

function updateHomeAd() {
  if ($('homeAdRef')) {
    if (pipsRequireUpdate) { addPipActions(); pipsRequireUpdate = false; }

    homeAddChangeTo(homeAdIdx);
    homeAdIdx++;

    if (homeAdIdx >= $('homeAdRef').select('li').length) {
      homeAdIdx = 0;
    }

    _TIMEOUT = setTimeout("updateHomeAd()", 6000);
  }
}

function homeAdForceSwitch(index) {
	if (_TIMEOUT != null) clearTimeout(_TIMEOUT);
	if (activeEffect != null) activeEffect.cancel();
	homeAddChangeTo(index);
	homeAdIdx=index;
	_TIMEOUT = setTimeout("updateHomeAd()", 6000);
}

var activeEffect = null;
function homeAddChangeTo(index) {
  var dykList = $('homeAdRef').select('li');
  var pipList = $('pips').select('li');

	for (var i = 0; i < dykList.length; i++) {
      if (dykList[i].hasClassName('active')) {
			activeEffect =  Effect.Fade(dykList[i], {duration:2, 
			afterFinish: function() {
			  dykList[i].removeClassName('active');
			  pipList[i].removeClassName('active');
			  dykList[index].addClassName('active');
			  pipList[index].addClassName('active');
			  activeEffect = Effect.Appear(dykList[index], {duration:2, from:0, to:1.0});
			}
			});
        break;
      }
    }
  }

function addPipActions() {
	count=0;
	$('pips').select('li').each(function(elm) {
		elm.observe('click', (function(count) {return function(e){homeAdForceSwitch(count);return false;}})(count));
		count++;
	});
}

function fuelWatchFilter() {


  $('showAllFuel').observe('click', function(e, elm) {
     showAllFuel();
  });
  
  function showAllFuel() {
    if($('showAllFuel').checked) {
      $$('.fuelTypes').each(function(elm) {
        elm.checked = true;
        $$('#fuelwatchResults .ULP, #fuelwatchResults .PULP95, #fuelwatchResults .PULP98, #fuelwatchResults .DIESEL, #fuelwatchResults .LPG, #fuelwatchResults .E10').each(function(elm) {
          elm.down('span').setStyle({'visibility':'visible'});
        });
      });
    } else {
      $$('.fuelTypes').each(function(elm) {
        elm.checked = false;
        $$('#fuelwatchResults .ULP, #fuelwatchResults .PULP95, #fuelwatchResults .PULP98, #fuelwatchResults .DIESEL, #fuelwatchResults .LPG, #fuelwatchResults .E10').each(function(elm) {
          elm.down('span').setStyle({'visibility':'hidden'});
        });
      });
    }
  }

  $$('.fuelTypes').each(function(elm) {
    elm.observe('click', function(event, e) {
       fuelTypes(elm);
    })
    fuelTypes(elm);
  })

  function fuelTypes(elm) {
     if(elm.checked) {
        $$('#fuelwatchResults .' + elm.value).each(function(elm) {
          elm.down('span').setStyle({'visibility':'visible'});
        });
      } else {
        if($('fuelwatchResults')) {
          $$('#fuelwatchResults .' + elm.value).each(function(elm) {
            elm.down('span').setStyle({'visibility':'hidden'});
          });
        }
        $('showAllFuel').checked = false;
      }
  }

  $('showAllBrands').observe('click', function(e, elm) {
    showAllBrands();
  });


  function showAllBrands() {
    if(!$('showAllBrands').checked) {
      $$('#brandsList span').each(function(elm) {
        elm.removeClassName('on');
        elm.addClassName('off');
        elm.previous().value = 'off';

        $$('#fuelwatchResults .' + elm.previous().name).each(function(elm) {
          elm.up().setStyle({'display':'none'});
        });

      });
    } else {
      $$('#brandsList span').each(function(elm) {
        elm.removeClassName('off');
        elm.addClassName('on');
        elm.previous().value = 'on';

        $$('#fuelwatchResults .' + elm.previous().name).each(function(elm) {
          elm.up().setStyle({'display':'table-row'});
        });

      });
    }
  }

  $$('#brandsList span').each(function(elm) {
     elm.observe('click', function(event, e) {
       brandsList(elm);
     });

     
    if(elm.hasClassName('off')) {
      $$('#fuelwatchResults .' + elm.previous().name).each(function(elm) {
        elm.up().setStyle({'display':'none'});
      });
    } else {
      $$('#fuelwatchResults .' + elm.previous().name).each(function(elm) {
        elm.up().setStyle({'display':'table-row'});
      });
    }
  });

  function brandsList(elm) {
     if(elm.hasClassName('off')) {
        elm.removeClassName('off');
        elm.addClassName('on');
        elm.previous().value = 'on';

        $$('#fuelwatchResults .' + elm.previous().name).each(function(elm) {
          elm.up().setStyle({'display':'table-row'});
        });

      } else {
        elm.removeClassName('on');
        elm.addClassName('off');
        elm.previous().value = 'off';
        $('showAllBrands').checked = false;

        $$('#fuelwatchResults .' + elm.previous().name).each(function(elm) {
          elm.up().setStyle({'display':'none'});
        });

      }
  }
}


function batteryQuote() {

  if($('newQuoteBtn')) {
    $('newQuoteBtn').observe('click', function() {
      $('batteryQuoteArea').removeClassName("show_quote");
    });
  }

  $('make').observe('change', function() {
    if($('make').value != '') {

      $('model').disable();
      $('model').firstDescendant().innerHTML = 'Loading...'
      $('model').value = '';
      $('year').disable();
      $('year').firstDescendant().innerHTML = 'Loading...'
      $('year').value = '';

      new Ajax.Request($('json').value, {
        method: 'post',
        parameters: $('batteryQuoteForm').serialize(),
        onComplete: function(response) {
           updateOption(response, 'model')
           $('year').firstDescendant().innerHTML = 'Please select a model...'
        }
      });
    }
  });

  $('model').observe('change', function() {
    if($('make').value != '') {

      $('year').disable();
      $('year').firstDescendant().innerHTML = 'Loading...'
      $('year').value = '';

      new Ajax.Request($('json').value, {
        method: 'post',
        parameters: $('batteryQuoteForm').serialize(),
        onComplete: function(response) {
           updateOption(response, 'year')
        }
      });
    }
  });

  function updateOption(response, elm) {
    var parseReady = response.responseText.replace("[", "").replace("]", "");
    var array = parseReady.split(",");

    var currentOptions =  $(elm).childElements();
    var defaultOption = currentOptions.shift();

    currentOptions.each(function(option) {
      option.remove();
    })

    array.each(function(option) {
      $(elm).insert({bottom: new Element('option', {'value':option}).update(option)})
    })

    defaultOption.innerHTML = 'Please select....'
    $(elm).enable();
  }

}

