/*! Respond.js: min/max-width media query polyfill. Remote proxy (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs  */
(function(win, doc, undefined){
  var docElem     = doc.documentElement,
    proxyURL    = doc.getElementById("respond-proxy").href,
    redirectURL   = (doc.getElementById("respond-redirect") || location).href,
    baseElem    = doc.getElementsByTagName("base")[0],
    urls      = [],
    refNode;
  function encode(url){
    return win.encodeURIComponent(url);
  }
   function fakejax( url, callback ){
    var iframe,
      AXO;
    // All hail Google http://j.mp/iKMI19
    // Behold, an iframe proxy without annoying clicky noises.
    if ( "ActiveXObject" in win ) {
      AXO = new ActiveXObject( "htmlfile" );
      AXO.open();
      AXO.write( '' );
      AXO.close();
      iframe = AXO.getElementById( "x" );
    } else {
      iframe = doc.createElement( "iframe" );
      iframe.style.cssText = "position:absolute;top:-99em";
      docElem.insertBefore(iframe, docElem.firstElementChild || docElem.firstChild );
    }
    iframe.src = checkBaseURL(proxyURL) + "?url=" + encode(redirectURL) + "&css=" + encode(checkBaseURL(url));
    function checkFrameName() {
      var cssText;
      try {
        cssText = iframe.contentWindow.name;
      }
      catch (e) { }
      if (cssText) {
        // We've got what we need. Stop the iframe from loading further content.
        iframe.src = "about:blank";
        iframe.parentNode.removeChild(iframe);
        iframe = null;
        // Per http://j.mp/kn9EPh, not taking any chances. Flushing the ActiveXObject
        if (AXO) {
          AXO = null;
          if (win.CollectGarbage) {
            win.CollectGarbage();
          }
        }
        callback(cssText);
      }
      else{
        win.setTimeout(checkFrameName, 100);
      }
    }
    win.setTimeout(checkFrameName, 500);
  }
    // http://stackoverflow.com/a/472729
  function checkBaseURL(href) {
        var el = document.createElement('div'),
        escapedURL = href.split('&').join('&').
            split('<').join('<').
            split('"').join('"');
        el.innerHTML = 'x';
        return el.firstChild.href;
  }
  function checkRedirectURL() {
    // IE6 & IE7 don't build out absolute urls in  attributes.
    // So respond.proxy.gif remains relative instead of http://example.com/respond.proxy.gif.
    // This trickery resolves that issue.
    if (~ !redirectURL.indexOf(location.host)) {
      var fakeLink = doc.createElement("div");
      fakeLink.innerHTML = '';
      docElem.insertBefore(fakeLink, docElem.firstElementChild || docElem.firstChild );
      // Grab the parsed URL from that dummy object
      redirectURL = fakeLink.firstChild.href;
      // Clean up
      fakeLink.parentNode.removeChild(fakeLink);
      fakeLink = null;
    }
  }
  function buildUrls(){
    var links = doc.getElementsByTagName( "link" );
    for( var i = 0, linkl = links.length; i < linkl; i++ ){
      var thislink  = links[i],
        href    = links[i].href,
        extreg    = (/^([a-zA-Z:]*\/\/(www\.)?)/).test( href ),
        ext     = (baseElem && !extreg) || extreg;
      //make sure it's an external stylesheet
      if( thislink.rel.indexOf( "stylesheet" ) >= 0 && ext ){
        (function( link ){
          fakejax( href, function( css ){
            link.styleSheet.rawCssText = css;
            respond.update();
          } );
        })( thislink );
      }
    }
  }
  if( !respond.mediaQueriesSupported ){
    checkRedirectURL();
    buildUrls();
  }
})( window, document );