/* Add Google Analytics linker information to forms */
var _gaq = _gaq || [];
_gaq.push(function(){

	function pad(s, len, c){
		return (new Array(len - s.length +1)).join(c) + s;
	}


	function base36(s, x){
		var x = x || 27, i = s.length, r = new Array(i);
		while(i--) r[i] = pad((s.charCodeAt(i) ^ x).toString(36), 2, '0');
		return r.join('') + ':' + x;
	}


  // Event listener abstraction with compatibility measures
  function listen (node, ev, handler, capture){
    var capture = !!capture;
    if(node.addEventListener){
      node.addEventListener(ev, handler, capture);
      return handler;
    } else if(node.attachEvent) {
      // Wrap the function in a binding so 'this' is the node in question
      return node.attachEvent('on' + ev, function(v){ handler.call(node, v || window.event); }) && handler;
    }
  }

  function ready (fn){
    return (document.body ? fn.call(window) : listen(window, 'load', fn, true));
  }

	var tracker = _gat._getTrackerByName('rollup'), linkerdata = tracker._getLinkerUrl(''), linkerdata = base36(linkerdata, 19);

  ready(function(){
      var forms = document.getElementsByTagName('form'), i = forms.length, input;
    while(i--){
      if(forms[i].className.indexOf('linker') < 0) continue;
      input = document.createElement('input');
      input.type = 'hidden';
      input.name = 'linker';
      input.value = (linkerdata);
      forms[i].appendChild(input);
    }
  });

  ready(function(){
		var ln = document.getElementsByTagName('a'), i = ln.length;
		while(i--){
			if(ln[i].className.indexOf('vision-link') < 0) continue;
			ln[i].href = tracker._getLinkerUrl(ln[i].href);
		}
  });

});
    

