// Small amount of Javascript to ease slider deployment.
var Discovery = {
  init: function() {
    if (typeof Scriptaculous=='undefined' ||
      parseFloat(
        Scriptaculous.Version.split(".")[0] + "." +
        Scriptaculous.Version.split(".")[1]) < 1.7)
    {
      throw("Discovery requires the script.aculo.us JavaScript framework >= 1.7..0");
    }
  },
  ajaxUpdate: function(target, progress, url, form, values) {
    Discovery.ajaxUpdateImpl(target, progress, url, form, values, true);
  },
  ajaxUpdateBody: function(target, progress, url, form, values) {
    Discovery.ajaxUpdateImpl(target, progress, url, form, values, false);
  },
  ajaxUpdateImpl: function(target, progress, url, form, values, urlEncoding) {
    url = unescape(url);
    for (varName in values) {
      $(form)[varName].value = values[varName];
    }
    var options = {
      evalScripts: true,
      requestHeaders: {
        'X-Custom-Redirect-Status': 500,
        'X-Custom-Redirect-Header': 'X-Custom-Redirect-To'
      },
      onLoading: function(transport) {
        if (progress && !Element.visible(progress)) {
          Element.show(progress);
        }
        if (target && Element.getOpacity(target) == '1.0') {
          Element.setOpacity(target, '0.2');
        }
      },
      onComplete: function(transport) {
        if (progress && Element.visible(progress)) {
          Element.hide(progress);
        }
        if (target && Element.getOpacity(target) != '1.0') {
          Element.setOpacity(target, '1.0');
        }
        Discovery.refreshGoogleAds();
      },
      onSuccess: function(transport) {
        if (target) {
          $(target).update(transport.responseText);
        }
      },
      on500: function(transport) {
        url = transport.getResponseHeader('X-Custom-Redirect-To');
        if (url) {
          window.location = url;
        } else {
          $(target).update(transport.responseText);
        }
      },
      on302: function(transport) {
        url = transport.getResponseHeader('Location');
        if (url) {
          window.location = url;
        } else {
          $(target).update(transport.responseText);
        }
      }
    };
    if (urlEncoding) {
      urlParams = url.toQueryParams();
      for (var i = 0; i < $(form).elements.length; i++) {
      	urlParams[$(form).elements[i].name] = $(form).elements[i].value;
      }
      url = url.substring(0,url.indexOf("?") + 1) + $H(urlParams).toQueryString();
    } else {
      options['parameters'] = Form.serialize(form, true);
    }
    new Ajax.Request(url, options);
  },
  registerSlider: function(target, progress, url, form, track, handle, varName) {
    new Control.Slider(handle, track, {
        sliderValue: $(form)[varName].value,
        onChange: function(v) {
          var values = {}
          values[varName] = v
          Discovery.ajaxUpdate(target, progress, url, form, values);
        }
    });
    var h = $(handle);
    if (h) {
      var addClass = h.attributes['addClass'];
      if (addClass) {
        addClass = addClass.value;
        Element.addClassName(h, addClass);
      }
    }
  },
  onLoad: function() {
    var tracks = document.getElementsByClassName('DiscoveryInit');
    for (var i = 0; i < tracks.length; i++) {
      var track = tracks[i];
      var initJs = track.attributes['discoveryInit']
      if (initJs) {
        initJs = initJs.value;
        if (initJs) {
          eval(initJs);
        }
      }
    }
  },
  refreshGoogleAds: function() {
    var count = 0;
    var iframes = document.getElementsByTagName("iframe");
    for (var i = 0; i < iframes.length; i++)
    {
      var iframe = iframes[i];
      if (iframe.name && iframe.name == 'google_ads_frame')
      {
        if (!iframe.origSrc)
        {
          // Copy original src so we don't just keep making the
          // src longer and longer as ajax events happen.
          iframe.origSrc = iframe.src;
        }
        iframe.src = iframe.origSrc + "&random=" + new Date().getTime();
      }
    }
  },
  toggleFirstDiv: function(el) {
    var div = el.getElementsByTagName("div")[0];
    if (div.style.display == "block")
    {
      div.style.display = "none";
    } 
    else
    {
      div.style.display = "block";
    }
	},
  assignZIndices: function() {
		var clickables = document.getElementsByClassName('Clickable');
    for (var i = 0; i < clickables.length; i++) {
  		clickables[i].style.zIndex = clickables.length - i;
    }
  }
}

Discovery.init();
